Подтвердить что ты не робот

Проблемы с кодировкой символов UTF-8 из строки строки запроса URL-адреса в Internet Explorer 9

Я нахожу странную проблему в Internet Explorer, особенно IE9, при попытке отобразить специальные символы (немецкие акцентированные символы), представленные в строке запроса URL. Это работает как в Firefox, так и в Chrome.

Например, URL-адрес, с которым я работаю, выглядит примерно так:

http://mysite.com/TestPage.aspx?Title=Hochauflösendes®

Я также пробовал URL-адрес URL-адреса URL-адреса:

http://mysite.com/TestPage.aspx?Title=Hochaufl%C3%B6sendes%C2%AE

В любом случае, когда я пытаюсь отобразить значение строки запроса "Название" на моей странице с помощью Request.QueryString["Title"], IE не отображает символы правильно:

Hochaufl�sendes�

Если я жестко программирую текст непосредственно на странице, он отображается правильно во всех браузерах. Это только при извлечении из строки запроса, где возникает проблема.

Страница сохраняется как кодировка UTF-8, и при необходимости на моей странице есть тег meta:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Я также просмотрел заголовок страницы и содержимое через Fiddler, и вся кодировка верна.

Что может заставить IE не отображать специальные символы правильно?

4b9b3361

Ответ 1

Как было предложено Aristos, использование HttpContext.Current.Request.RawUrl работало для моей ситуации.

Чтобы получить истинное значение строки запроса из RawUrl, можно использовать простой метод:

private string GetQueryStringValueFromRawUrl(string queryStringKey)
{
    var currentUri = new Uri(HttpContext.Current.Request.Url.Scheme + "://" + 
        HttpContext.Current.Request.Url.Authority + 
        HttpContext.Current.Request.RawUrl);
    var queryStringCollection = HttpUtility.ParseQueryString((currentUri).Query);
    return queryStringCollection.Get(queryStringKey);
}

Извлечение значения с использованием этого метода было проверено как работающее в IE8 и IE9. Исправлена ​​ошибка в IE10.