asp.net – Internet Explorer 9中的URL查询字符串值的UTF-8字符编码问题

前端之家收集整理的这篇文章主要介绍了asp.net – Internet Explorer 9中的URL查询字符串值的UTF-8字符编码问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Internet Explorer中找到一个奇怪的问题,特别是IE9,当尝试显示URL查询字符串中提供的特殊字符(德文重音字符)时.这在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”]在我的页面显示“Title”查询字符串值时,IE不会正确显示字符:

Hochaufl�sendes�

如果我直接在页面上直接编码文本,则会在所有浏览器上正确显示.只有当它从问题发生的查询字符串中拉出时.

页面保存为UTF-8编码,并且我的页面中有必要的元标记

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

我也通过Fiddler查看了页面标题内容,所有的编码都是正确的.

可能导致IE不能正确显示特殊字符?

解决方法

根据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中修复了错误.

原文链接:https://www.f2er.com/aspnet/246443.html

猜你在找的asp.Net相关文章