10

URLクエリ文字列内で提供される特殊文字(ドイツ語のアクセント付き文字)を表示しようとすると、Internet Explorer、特にIE9で奇妙な問題が発生します。これはFirefoxとChromeで期待どおりに機能しています。

たとえば、使用しているURLは次のようになります。

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

また、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が特殊文字を正しく表示しない原因は何ですか?

4

1 に答える 1

4

アリストスによって提案されたように、使用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で修正されています。

于 2013-02-01T22:30:44.173 に答える