带有Cyrillic查询字符串的URL在IE中不起作用(但在Firefox中工作)

时间:2010-12-06 15:38:29

标签: asp.net character-encoding internationalization query-string

在我们的网站上,我使用查询字符串中的类别(俄语)。

例如:http://www.odinklik.ru/kategoriya.aspx?cat=люди

如果您在IE8中粘贴此链接,则会将其翻译为cat = ????它不起作用 如果我将它粘贴在FireFox中,它就能正常工作。

它变得更加奇怪:从主页可以访问相同的URL,如果我从主页单击IE8中的相同URL它工作正常(除非我在新选项卡中单击打开,它回到?? ??)。

我正在使用ASP.NET 3.5(C#)

2 个答案:

答案 0 :(得分:1)

您是否尝试在第一页上进行编码并从西里尔语解码为Unicode并返回? 有点头疼但是很有效。

答案 1 :(得分:1)

您应该在将类别名称添加到查询字符串之前对其进行URL编码,而不是依赖浏览器为您执行此操作。

方法HttpServerUtility.UrlEncode应该能够为您处理此编码。

HttpServerUtility.UrlEncode应该为您提供链接http://www.odinklik.ru/kategoriya.aspx?cat=%D0%BB%D1%8E%D0%B4%D0%B8,它可以为您提供正确的结果。

(请注意,%D0%BB对应л%D1%8E对应ю%D0%B4对应д%D0%B8对应{ {1}}。由于西里尔字符的Unicode值超过и,因此每个字符需要两个URL编码字节。)