Я создал веб-форму для операции поиска в одном из моих проектов, и HTML-код довольно прост:
<form action='/search' method="post">
<input type="text" id='search-term' name='search-term' />
<input type="submit" id='start-search' alt='' value="" />
</form>
Итак, когда пользователь вводит поисковый термин Unicode и нажимает Enter, HTTP Getзапрос будет отправлен на сервер с этим URL:
http://www.example.com/search?search-term=مثال
Это на сервере будет:
http://www.example.com/search?search-term=%D9%85%D8%AB%D8%A7%D9%84
, и я смогу получить декодированное значение search-term
строка запроса с использованием HttpContext.Current.Server.UrlDecode("%D9%85%D8%AB%D8%A7%D9%84")
, которая возвращает мне مثال
.До сих пор все работает нормально, и у меня нет проблем.
Однако, если кто-то введет вышеупомянутый адрес непосредственно в IE9 и нажмет Enter, то я получу на сервере:
http://www.example.com/search?search-term=????
Что здесь не так?
Обновление: мы проверили трафик через Fiddler, и вы можете увидеть результат на следующих рисунках:
HTTP Получить заголовки, захваченные Fiddler, запрошенные у Firefox
HTTP Получить заголовки, захваченные Fiddler, запрошенные с помощью IE