【问题标题】:Are HTML encoded special characters required to end in a semicolon?HTML 编码的特殊字符是否需要以分号结尾?
【发布时间】:2012-11-01 18:18:51
【问题描述】:

em-dash 的正确编码应该是—,但是当分号被省略时,它仍然可以在我的浏览器(chrome 和 firefox)中正确显示。

此外,我正在使用Litmus.com 来测试多个电子邮件客户端的字符编码。事实证明,在显示除 gmail(IE、chrome 和 firefox)之外的特殊字符时,几乎所有这些都忽略了所需的分号。

所以我的问题是:编码的 HTML 特殊字符是否需要以分号结尾?似乎 gmail 正在遵守规则,而其他人都忽略了所需的分号。

【问题讨论】:

  • 当您问“必需”时,您是指规范要求还是浏览器要求?
  • @BoltClock 我的意思是规范要求。

标签: html character-encoding html-email


【解决方案1】:

由于 4.01 版之前的 HTML 是基于 SGML 的,因此可以删除最终的 ;,请参阅 w3centities

注意。在SGML中,可以去掉最后的“;”在某些情况下,在字符引用之后(例如,在换行符处或紧接在标记之前)。在其他情况下,它可能不会被消除(例如,在单词中间)。我们强烈建议使用“;”在所有情况下,以避免需要此字符存在的用户代理出现问题。

但是,current HTML5 working draft 声明字符引用需要以分号结束。为了使您当前的网站为 HTML5 做好准备,我建议您以分号结束引用。

【讨论】:

  • 此外,在 XHTML 中,分号始终是必需的,根据一般 XML 规则。
【解决方案2】:

浏览器会尽最大努力解释您的意图,并且有些宽容。最好遵守规则,以确保在任何地方都能正常工作。

【讨论】:

    【解决方案3】:

    关于“可选”分号用例的争论有很多。我能给你的最好建议就是使用它。

    如果使用该规则会导致 ALL 浏览器工作,而不使用它会导致 大多数 浏览器工作,请使用 ALL

    另外,W3C 在这里声明(虽然我找不到完整的规范):http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.3

    【讨论】:

      【解决方案4】:

      是的,它们的末尾必须有一个分号。然而,浏览器确实原谅了大部分时间并尝试解释它。这是一个可能会失败的示例:

      this&ampthat 将返回 this&ampthat -- FAIL

      同时

      this&that 将返回 this&that -- 工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多