У меня есть строка запроса со значением параметра, которая содержит норвежский символ å
, закодированный как %e5
. Страница содержит форму с атрибутом действия, который автоматически заполняется ASP.Net. Когда URL-адрес выводится в указанный атрибут, он печатается с полным двухбайтовым кодированием: %u00e5
.Сломанная кодировка после обратной передачи
При отправке назад это выглядит нормально при отладке кода позади. Однако страница на самом деле делает редирект на себя (по какой-то другой причине) и заголовок переадресации расположения выглядит следующим образом: Location: /myFolder/MyPage.aspx?Param1=%C3%A5
Так %e5
переведен на %C3%A5
, нарушающий выход как-то.
В тексте HTML сломанные символы выглядят как Ã¥
после вывода через HttpUtility.HtmlEncode.
Все веб-приложение кодируется ISO8859-1.
PS. При удалении u00 с выхода %u00e5
в атрибуте действия перед отправкой формы все выводится красиво. Но ошибка, по-видимому, представляет собой перевод с %e5
на %C3%A5
. (И, конечно, саморегуляция, но это другое дело.)
Любые указатели?
Это не ошибка , '% C3% A5' - это просто версия UTF-8 с URL-кодировкой. Ошибка заключается в преобразовании в HTML: каждая кодированная последовательность UTF-8 в URL-адресе должна быть преобразована обратно в кодовую точку Юникода, а затем в HTML-кодировку. – Philipp
На самом деле кажется, что URL-кодировка верна, если она '% e5' для' å' согласно http://www.w3schools.com/tags/ref_urlencode.asp. Похоже, проблема заключается в том, что перенаправление IIS выводит заголовок 'location' с помощью кодировки utf-8, т. Е.'% E5' переводится в '% c3% a5' – Polymorphix