Firefox 中的 Server.UrlEncode 撇号(')
所以我有一个名为 lnkTwitter 的超链接:
并且我尝试在后面的代码中设置 url:
lnkTwitter.NavigateUrl = string.Format("http://www.twitter.com/home?status={0}", Server.UrlEncode("I'm Steven"));
当我这样做并将鼠标悬停在链接上时,该 url 在状态栏中正确显示为“http://www.twitter.com/home?status=I'm+Steven",但实际的网址,如果我单击链接或查看链接的属性,则为“http:// /www.twitter.com/home?status=I%27m+Steven”。
由于某种原因,这只发生在 Firefox 中;在 IE 中,我被带到正确的网址。
So I have a Hyperlink called lnkTwitter:
And I'm trying to set the url in the code behind:
lnkTwitter.NavigateUrl = string.Format("http://www.twitter.com/home?status={0}", Server.UrlEncode("I'm Steven"));
When I do that and hover over the link, the url displays correctly in the status bar as "http://www.twitter.com/home?status=I'm+Steven", but the actual url, if I click on the link or look at the link's properties, is "http://www.twitter.com/home?status=I%27m+Steven".
For some reason, this only happens in Firefox; in IE, I am taken to the correct url.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您是否尝试过查看源代码?
如果源代码没问题,那么您的代码就没有问题。
Have you tried to view source code?
If source is ok, then there's no troubles with your code.
Firefox 只是喜欢对它显示的 URL 进行转义。虽然这可能会令人困惑,但它不应导致您的代码或您链接到的网站(在本例中为 Twitter)出现任何问题。
如果您点击链接,然后复制网址并将其粘贴到记事本或其他东西中,那么您应该获得实际使用的转义形式,而不是显示的未转义形式。
Firefox just likes to unescape the urls that it shows. While this can be confusing it should not cause your code or the sites you link to (twitter, in this case) any problems.
If you follow the link and then copy the url and paste it into Notepad or something then you should get the escaped form that was actually used instead of the unescaped form that was displayed.
Uri.EscapeDataString、Uri.EscapeUriString、HttpUtility.UrlEncode 和 HttpUtility.UrlPathEncode 可以在 C# 中开箱即用,它们不能像 JavaScript 转义函数那样转换所有字符。
解决方案:使用JScript.Net自己的实现。只需引用 Microsoft.JScript.dll 并使用 Microsoft.JScript.GlobalObject.escape() 方法对您的 url 进行编码。
Uri.EscapeDataString, Uri.EscapeUriString, HttpUtility.UrlEncode and HttpUtility.UrlPathEncode are available to use in C# out of the box, they can not convert all the characters exactly the same way as JavaScript escape function does.
Solution: Use JScript.Net's own implementation. Simply reference the Microsoft.JScript.dll and use the Microsoft.JScript.GlobalObject.escape() method to encode your url.