Как кодировать и кодировать только специальные HTML-символы в URL в vb.net - PullRequest
3 голосов
/ 01 марта 2012

Скажи только &,?, /,.

Я хочу, чтобы остальные остались без изменений, включая китайские или японские символы. Те могут быть вставлены в получить просто хорошо, верно?

Язык vb.net

1 Ответ

3 голосов
/ 01 марта 2012

Эта ссылка может помочь вам ... http://dhanushkaat.blogspot.in/2012/01/only-encode-url-special-characters-in.html

<час /> <час /> Редактировать: Я добавил содержание по ссылке ниже:
Когда дело доходит до кодирования специальных символов со ссылкой на URL, мы можем легко использовать функции, которые были определены в сборке System.Web.dll.

Хотя это наиболее простой и удобный способ кодирования строки для обеспечения ее совместимости в контексте HTTP, в некоторых случаях мы не получаем эту привилегию автоматически (например, не веб-приложения).

Я столкнулся с таким сценарием, когда разрабатывал пользовательскую функцию SQL Server из VS 2010. Особая проблема в этом случае заключалась в том, что при добавлении ссылки на сборку в проекте SQL CLR ссылка извлекается из GAC на сервере базы данных. Microsoft добавила набор сборок, которые они определили как безопасные сборки, на которые должна ссылаться функция T-SQL, в GAC, что дает нам возможность использовать функциональные возможности, определенные в этих классах. Но, к сожалению, System.Web.dll не является одним из них.

Итак, каков будет обходной путь, еще одну функцию, которую мы можем использовать для кодирования URL, можно найти в пространстве имен System.Uri, которое, к счастью, находится внутри System.dll.

ОК, так как использовать его только для кодирования специальных символов URL! Просто используйте силу «Регулярных выражений».

Вот функция, которую я написал.

private static string EncodeUrl(string toEncode)
  {
     const string pattern = "[$&+,/:;=?@]";
     var match = Regex.Match(toEncode, pattern);
     while(match.Success)
     {
        toEncode = toEncode.Replace(match.Value, Uri.EscapeDataString(match.Value));
        match = Regex.Match(toEncode, pattern);
     }
     return toEncode;
  }

Функция несколько раз проверяет переданную строку, пока все специальные символы не будут заменены соответствующими кодированными значениями.

Сочетание функций Regex.Match и string Replace обеспечивает замену только тех символов, которые определены в шаблоне регулярного выражения.

...