“—” 或者 “—” 在 HTML 输出中有什么区别吗?

83

——

它们之间有什么区别吗? 有一个比另一个得到更好的支持吗?


7
完整性起见:实际的长破折号(“mdash”)字符是:“—”,应该与字符“m”的宽度相同。 - Simon B.
6
是的,大写字母M。 - Ray Tayek
5个回答

86

SGML解析器(或者在XHTML的情况下为XML解析器)可以处理—,而无需处理DTD(对于浏览器来说并不重要,因为它们只会吞噬标签混乱),而—更容易让人阅读和源代码中编写。

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


15

— :: — :: \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&mdash;to protect from possible script hacking and cross-site hacks.</div>

你应该使用\u2014,而不是以&为前缀的表示:

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

2
与React完美配合。 - Green

13

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

除了浏览器bug之外,在所有情况下它们显示相同,因此唯一的区别在于代码可读性,这将指向&mdash;

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


5
请注意,这只适用于HTML,在XML中,&8212;始终有效,而&mdash;取决于是否声明了该实体。 - Flimm

2

来自W3网站的常用于排版的HTML实体

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

翻译:如果您想获得最广泛的支持,请选择&mdash;


1

或许使用数字编码更具普适性,因为它直接参考了 HTML 实体表中的字符,但我猜它们在任何地方都能工作。对于很多字符来说,第一种符号表示法只是要容易记忆得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接