所以我有一个名为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中,我被带到了正确的网址。
答案 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进行编码。