2012-02-21 46 views
0

我为客户的主页创建了一个动态产品列表,并且在IE8中发现了一个令人讨厌的问题。在URL上替换了特殊字符

的产品网址都建有以下结构:出现

http://www.domain.com/language/category/product_name.aspx 

的问题时,我的西班牙语显示的网站和类别包含特殊字符"ñ":IE替换字符与"%c3%b1"

以下代码我发现URL构建正确,但是当服务器显示结果页面时,所有支持特殊字符的URL都被替换。

ASPX页面具有控制:

<asp:HyperLink ID="LinkTitle" runat="server">Product Name</asp:HyperLink> 

背后类的代码分配值到控制一个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 

就如何解决这个任何想法时?

回答

0

最后我设法解决了特殊字符问题。我在网站上做了一些修改。我把它换成aspx页面的ASP HyperLink控件与

<a id="LinkTitle" runat="server">Product Name</a> 

和后面的代码是有点不同,现在

Dim ProdLNK As HtmlAnchor 
Dim Link as String 
ProdLNK = LstView.FindControl("LinkTitle") 

Link = "/" & Session("lang") & "/" & cat & "/" & product & ".aspx" 
ProdLNK.HRef = Link 

现在IE8处理

5

这是设计。

网址可以包含一组ASCII characters only。 ASCII以外的任何字符都是内部百分比编码的。

现在的浏览器,搜索引擎等在显示URL之前会对URL进行百分比解码(所以它看起来更好),但在内部,UTF-8ñ将始终为%c3%b1。 IE8显然不这样做,所以如果你想提供适当的URL,没有办法让它们在IE8中看起来不错。

有关背景信息,请参阅Unicode characters in URLs

+0

我使用IE8的所有URL 。但浏览器不会百分比解码网址。 – 2012-02-21 11:01:38

+0

@Cpt如果我将'http:// www.iana.org/ domains/example /'''粘贴到IE8中,它会使字符保持不变。你在哪里看URL?在地址栏中?你有一个活的例子来展示吗? – 2012-02-21 11:03:51

+0

如果手动将百分比代码更改为特殊字符,则一切正常。错误似乎发生在列表的建设过程中。以下是一个例子:[link]http://www.motocard.com/sp/productsmoto/renthal/puños-14_199_0_95_0_0.aspx。确实,请看清单 – 2012-02-21 11:12:14