UrlEncoding - какую кодировку я должен использовать? - PullRequest
2 голосов
/ 05 января 2011

Используя HttpUtility.UrlEncode и передавая через URL, получающая страница видит переменные как:

новый -> новый + 1005 * Airconaire + Ltd -> Airconaire + Ltd

Можете ли вы увидеть, как у первого и второго у обоих есть +, которых у них не было в начале? Я предполагаю, что это как-то связано с кодировкой (особенно RFC3986 или RFC2396), но как мне решить эту проблему?

Я думаю, что в идеале пробелы должны быть преобразованы в% 20, но разве это лучший путь вперед?

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Попробуйте использовать HttpUtility.UrlPathEncode вместо URLEncode.

1 голос
/ 05 января 2011

Метод UrlEncode () можно использовать для кодирования всего URL-адреса, включая значения строки запроса.Если такие символы, как пробелы и знаки препинания, передаются в потоке HTTP, они могут быть неправильно истолкованы на принимающей стороне.Кодировка URL преобразует символы, которые не разрешены в URL, в эквиваленты символьной сущности;Декодирование URL меняет кодировку.Например, когда символы <и> встраиваются в блок текста для передачи в URL-адресе, они кодируются как% 3c и% 3e.

Вы можете кодировать URL-адрес, используя UrlEncode ()метод или метод UrlPathEncode ().Однако методы возвращают разные результаты.Метод UrlEncode () преобразует каждый пробел в символ плюс (+).Метод UrlPathEncode () преобразует каждый символ пробела в строку «% 20», которая представляет пробел в шестнадцатеричной записи.Используйте метод UrlPathEncode () при кодировании части пути URL-адреса, чтобы гарантировать согласованный декодированный URL-адрес независимо от того, какая платформа или браузер выполняет декодирование.

http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx

...