Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Internet Explorer 9中URL查询字符串值的UTF-8字符编码问题_Asp.net_Internet Explorer_Encoding_Utf 8_Query String - Fatal编程技术网

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

Asp.net Internet Explorer 9中URL查询字符串值的UTF-8字符编码问题,asp.net,internet-explorer,encoding,utf-8,query-string,Asp.net,Internet Explorer,Encoding,Utf 8,Query String,当我试图显示URL查询字符串中提供的特殊字符(德语重音字符)时,我在InternetExplorer中发现了一个奇怪的问题,特别是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 在

当我试图显示URL查询字符串中提供的特殊字符(德语重音字符)时,我在InternetExplorer中发现了一个奇怪的问题,特别是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”]
在页面上显示该“Title”查询字符串值时,IE无法正确显示字符:

Hochaufl�sendes�
如果我直接在页面上硬编码文本,它将在所有浏览器上正确显示。只有在从出现问题的查询字符串中提取文本时才会显示

页面保存为UTF-8编码,我在页面中根据需要添加
meta
标记:

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

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


是什么导致IE不能正确显示特殊字符?

正如亚里士多德所建议的,使用
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中已经修复。

我不记得为什么了,但我有同样的问题,通过手动从
HttpContext.Current.Request.RawUrl
中提取参数来解决。通过手动,我的意思是我已经创建了一个自定义函数,可以获取RawUrl并提取参数,而不使用QueryString。@亚里士多德,这是一个值得尝试的好主意。我确实找到了,它探索了获取值的不同方法,但也表明这可能是IE中的一个错误,尽管这是2009年的错误。@Aristos使用
HttpContext.Current.Request.RawUrl
有效。然后,我使用中找到的方法检索值。然后我建议您对其进行回答,并描述如何解决它。我刚刚尝试过。输入值“iiiĞĞĞiiiŞŞ”输出值“iiiÞÞððÐД浏览器上一个ie版本。