【问题标题】:Ampersands in hyperlinks cause W3C validation to fail超链接中的和号导致 W3C 验证失败
【发布时间】:2011-01-29 16:00:40
【问题描述】:

我有一个反复出现的问题。我编写了符合标准的良好代码,但由于某些超链接 url 中的 & 符号而失败。

有没有人知道解决这个问题的方法或破解方法。

谢谢

【问题讨论】:

    标签: html validation web-standards w3c-validation


    【解决方案1】:

    我编写了符合标准的良好代码,但由于某些超链接 url 中的 & 符号而失败。

    URL 中未转义的 & 符号(或其他任何地方,如果它们不是 HTML 实体的一部分!)不是“符合标准的良好代码”。

    把它们变成&,你就可以准确地声称自己做到了。

    【讨论】:

    • 语法纳粹:/replace are not with ist
    • +1 另外很高兴知道:未屏蔽的& 将被视为无效即使在 JavaScript 块中,除非它们包含在 CDATA 标记中。
    • 感谢大家的回复。 URL 编码对我来说是一个新的,我正在研究它。上面 Ronald 提供的 W3C URL 编码页面有一个很好的链接。
    【解决方案2】:

    您是否在这样的链接中制作了它们?

    &
    

    【讨论】:

      【解决方案3】:

      您应该URL Encode 超链接,以便所有字符都转换为有效的 ASCII 格式并且不包含任何 (X)HTML 实体。

      对于 C# 使用 HttpUtility.UrlEncode,对于 PHP urlencode,对于 JavaScript encodeURI 等...为您正在使用的语言找到正确的方法应该不会那么难。

      【讨论】:

      • htmlspecialchars (php.net/manual/en/function.htmlspecialchars.php) 实际上比 urlencode 要好。
      • ...我想称之为必要urlencode() 是错误的方法。 & 符号在 URL 中具有特殊含义(GET 参数分隔符),urlencode() 将通过转义它们删除该含义。我们不想在 URL 上下文中对 & 符号进行编码。我们想在 HTML 上下文中对 & 符号进行编码。 htmlspecialchars() 这样做。
      【解决方案4】:

      CDATA 可以在 JavaScript 字符串中有 & 的地方创造奇迹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 2019-04-17
        相关资源
        最近更新 更多