【问题标题】:Server.UrlEncode apostrophe(') in FirefoxFirefox 中的 Server.UrlEncode 撇号(')
【发布时间】:2011-04-26 02:00:32
【问题描述】:

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

我正在尝试在后面的代码中设置 url:

lnkTwitter.NavigateUrl = string.Format("http://www.twitter.com/home?status={0}", Server.UrlEncode("我是史蒂文"));

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

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

【问题讨论】:

    标签: c# asp.net html encoding


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    Firefox 只是喜欢取消转义它显示的网址。虽然这可能会造成混淆,但它不应导致您的代码或您链接到的网站(在这种情况下为 Twitter)出现任何问题。

    如果您点击链接,然后复制 url 并将其粘贴到记事本或其他东西中,那么您应该得到实际使用的转义形式,而不是显示的未转义形式。

    【讨论】:

      【解决方案3】:

      Uri.EscapeDataString、Uri.EscapeUriString、HttpUtility.UrlEncode 和 HttpUtility.UrlPathEncode 可以在 C# 中直接使用,它们不能像 JavaScript 转义函数一样转换所有字符。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        相关资源
        最近更新 更多