Firefox中的Server.UrlEncode撇号(')

时间:2010-01-29 20:58:35

标签: c# asp.net html encoding

所以我有一个名为lnkTwitter的超链接:

我正在尝试在代码中设置网址:

lnkTwitter.NavigateUrl = string.Format("http://www.twitter.com/home?status={0}", Server.UrlEncode("I'm Steven"));

当我这样做并将鼠标悬停在链接上时,网址会在状态栏中正确显示为“http://www.twitter.com/home?status=I'm + Steven”,但实际的网址是,如果我点击链接或查看链接的属性,是“http://www.twitter.com/home?status=I%27m+Steven”。

出于某种原因,这只发生在Firefox中;在IE中,我被带到了正确的网址。

3 个答案:

答案 0 :(得分:1)

您是否尝试过查看源代码? 如果来源正常,那么您的代码就没有问题了。

答案 1 :(得分:1)

Firefox只是喜欢浏览它显示的网址。虽然这可能令人困惑,但它不应该导致您的代码或链接到的网站(在本例中为twitter)出现任何问题。

如果您按照链接然后复制网址并将其粘贴到记事本或其他内容,那么您应该获得实际使用的转义表单,而不是显示的未转义表单。

答案 2 :(得分:0)

Uri.EscapeDataString,Uri.EscapeUriString,HttpUtility.UrlEncode和HttpUtility.UrlPathEncode可用于C#开箱即用,它们无法完全转换所有字符,就像JavaScript转义函数一样。

解决方案:使用JScript.Net自己的实现。只需引用Microsoft.JScript.dll并使用Microsoft.JScript.GlobalObject.escape()方法对您的URL进行编码。