加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:32:07 所属栏目:asp.Net 来源:网络整理
导读:我在Internet Explorer中找到一个奇怪的问题,特别是IE9,当尝试显示URL查询字符串中提供的特殊字符(德文重音字符)时.这在Firefox和Chrome中正常工作. 例如,我正在使用的URL看起来像这样: http://mysite.com/TestPage.aspx?Title=Hochaufl?sendes? 我也尝试过
我在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中修复了错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读