当尝试显示 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 无法正确显示特殊字符?
最佳答案
按照 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 中修复。
关于asp.net - Internet Explorer 9 中 URL 查询字符串值的 UTF-8 字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636073/