—
或—
它们之间有什么区别吗? 有一个比另一个得到更好的支持吗?
SGML解析器(或者在XHTML的情况下为XML解析器)可以处理—
,而无需处理DTD(对于浏览器来说并不重要,因为它们只会吞噬标签混乱),而—
更容易让人阅读和源代码中编写。
个人而言,我会坚持使用真正的em-dash,并确保我的字符编码设置是一致的。
—
:: —
:: \u2014
在 JavaScript 文本字符串中表示 m-dash 以输出到 HTML 时,需要注意它将被其 Unicode 值所代表。在某些情况下,和 JSX 内的某些上下文环境尤其如此,和字符 ('&') 将无法解析。在这种情况下,既不能使用 —
也不能使用 —
。相反,您需要使用 Unicode 转义序列:\u2014
。
例如,在实现用于从 JavaScript 变量输出文本的 render()
方法时:
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—to protect from possible script hacking and cross-site hacks.</div>
你应该使用\u2014,而不是以&
为前缀的表示:
let text='JSX transcoders will preserve the & character\u2014to …'
它们是完全相同的字符。请参阅:http://en.wikipedia.org/wiki/Dash
除了浏览器bug之外,在所有情况下它们显示相同,因此唯一的区别在于代码可读性,这将指向—
。
或者,如果您在HTML文档中使用UTF-8作为字符集,您可以直接输入该字符。那也会完全相同地显示。
&8212;
始终有效,而—
取决于是否声明了该实体。 - Flimm来自W3网站的常用于排版的HTML实体
为了便携性,Unicode实体引用应保留用于确定将使用UTF-8或UTF-16字符集编写的文档。在所有其他情况下,应使用字母数字引用。
翻译:如果您想获得最广泛的支持,请选择—
或许使用数字编码更具普适性,因为它直接参考了 HTML 实体表中的字符,但我猜它们在任何地方都能工作。对于很多字符来说,第一种符号表示法只是要容易记忆得多。