URL上替换了特殊字符

Cpt*_*ome 0 asp.net url internet-explorer encode

我正在为客户的主页创建一个动态的产品列表,我在IE8中发现了一个非常烦人的问题.

产品的URL使用以下结构构建:

http://www.domain.com/language/category/product_name.aspx
Run Code Online (Sandbox Code Playgroud)

当我用西班牙语显示网站并且类别包含特殊字符时出现问题"ñ":IE用字符替换字符"%c3%b1".

根据我的代码,我发现URL构造正确,但是当服务器显示结果页面时,所有包含特殊字符的URL都已被替换.

aspx页面有控件:

<asp:HyperLink ID="LinkTitle" runat="server">Product Name</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

并且类背后的代码在ListView的ItemDataBound事件期间将值赋给控件

Dim L_LinkTit As HyperLink    
Dim Link as String
L_LinkTit = LstView.FindControl("LinkTitle")

Link = "/" & Session("lang") & "/" & cat & "/" & product & ".aspx"
L_LinkTit.NavigateUrl = Link
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

Pek*_*ica 5

这是设计的.

URL只能包含一组ASCII字符.除ASCII之外的任何字符都是内部百分比编码.

现代浏览器,搜索引擎等会在显示之前对URL进行百分比解码(因此它看起来更好),但在内部,UTF-8ñ始终是%c3%b1.IE8显然不会这样做,所以如果你想提供正确的URL,就没有办法让它们在IE8中看起来很漂亮.

有关背景信息,请参阅URL中的Unicode字符.