浏览器网址中的非英语字符

时间:2009-09-24 10:44:30

标签: asp.net

/ BG /продукти/ 81-皮肤色调掩模

如何在浏览器网址路径中获取该节目,而不是

/ BG /%D0%BF%D1%80%D0%是%D0%B4%D1%83%D0%BA%D1%82%D0%B8 / 81-皮肤色调掩模

  1. HttpUtility.UrlEncode(“/ bg /продукти/ 81-skin-toning-mask”) - 相同的结果(продукти部分不可读的字符)
  2. HttpUtility.UrlEncodeUnicode(“/ bg /продукти/ 81-skin-toning-mask”) - 甚至没有正确呈现链接(奇怪)
  3. HttpUtility.UrlPathEncode(“/ bg /продукти/ 81-skin-toning-mask”) - 相同的结果(продукти部分不可读的字符)

3 个答案:

答案 0 :(得分:3)

http://www.example.com/bg/продукти/81-skin-toning-mask

IRI

http://www.example.com/bg/%d0%bf%d1%80%d0%be%d0%b4%d1%83%d0%ba%d1%82%d0%b8/81-skin-toning-mask

上述IRI的正确URI表示。

两者都有效,并且与现代浏览器中<a href>的值一样有效。

通常认为旧浏览器使用URI版本更友好,但是当你这样做时,IE(奇怪)在地址栏中显示URI版本而不是漂亮的IRI版本,即使它是相同的地址和IE发送相同的请求来获取它。此外,一些角色IE将永远不会显示未编码(虽然俄罗斯为我工作)。

因此,如果您更关心的是在IE中使地址栏看起来比支持旧的IRI前浏览器更好,只需将非ASCII字符串直接写入页面,只转义带外ASCII字符。您的页面应该作为UTF-8提供,以便在不同的IE设置下可靠地工作,但是现在您所做的一切都应该是UTF-8。

答案 1 :(得分:0)

RFC 1738中统一资源定位器(URL)中允许字符的定义未考虑非拉丁语(非US-ASCII)字符集。

对不起,这是非常沙文主义的,但请考虑支持所有字母表有多难!?

答案 2 :(得分:0)