【问题标题】:`—` or `—` is there any difference in HTML output?`—` 或 `—` HTML 输出有什么不同吗?
【发布时间】:2011-05-07 05:36:54
【问题描述】:

——

这些有区别吗?一个比另一个得到更好的支持吗?

【问题讨论】:

  • 为了完整起见:实际的长破折号(“mdash”)字符是:- 并且应该与字符“m”一样宽
  • 是的,大写的M

标签: html ascii


【解决方案1】:

—::—::\u2014

当在 JavaScript 文本字符串中表示 m-dash 以输出到 HTML 时,请注意它将由其 unicode 值表示。在某些情况下,与字符 ('&') 将无法解析——尤其是 JSX 中的某些上下文。在这种情况下,—— 都不起作用。相反,您需要使用 Unicode 转义序列:\u2014

例如,当实现 render() 方法以从 JavaScript 变量输出文本时:

render() {
   let text='JSX transcoders will preserve the & character—to ' 
            + 'protect from possible script hacking and cross-site hacks.'
   return (
     <div>{text}</div>
   )
}

这将输出:

<div>JSX transcoders will preserve the & character&mdash;to protect from possible script hacking and cross-site hacks.</div>

您应该使用 \u2014:而不是 &amp;– 前缀表示:

let text='JSX transcoders will preserve the & character\u2014to …'

【讨论】:

  • 与 React 配合得很好。
【解决方案2】:

来自W3网站Common HTML entities used for typography

为了可移植性,应保留 Unicode 实体引用以用于确定以 UTF-8 或 UTF-16 字符集编写的文档。在所有其他情况下,应使用字母数字引用。

翻译:如果您正在寻求最广泛的支持,请选择&amp;mdash;

【讨论】:

    【解决方案3】:

    它们是完全相同的字符。见:http://en.wikipedia.org/wiki/Dash

    除非出现浏览器错误,否则它们在所有情况下都会显示相同的内容,因此唯一的区别在于代码可读性,这将指向 &amp;mdash;

    或者,如果您在 HTML 文档中使用 UTF-8 作为字符集,则可以直接输入该字符。这也将显示完全相同。

    【讨论】:

    • 请注意,这仅适用于 HTML,在 XML 中,&amp;8212; 始终有效,而 &amp;mdash; 取决于已声明实体。
    【解决方案4】:

    SGML 解析器(或 XHTML 中的 XML 解析器)可以处理 &amp;#8212; 而无需处理 DTD(这对浏览器来说无关紧要,因为它们只是喝标签汤),而 &amp;mdash; 对人类来说更容易在源代码中进行读写。

    就个人而言,我会坚持使用文字 em-dash 并确保我的字符编码设置是一致的。

    【讨论】:

      【解决方案5】:

      可能是使用数字代码更通用,因为它是对 html 实体表中字符的直接引用,但我想它们都可以在任何地方使用。对于很多字符来说,第一个符号更容易记住。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        相关资源
        最近更新 更多