`—或`—`HTML输出是否有区别?


79

— 要么 —

这些之间有区别吗?一个支持比另一个更好吗?


7
出于完整性考虑:实际的长破折号(“ mdash”)字符为:—且应与字符“ m”一样宽
Simon B.

6
是的,大写
字母

Answers:


85

SGML解析器(或XHTML情况下的XML解析器)可以处理—而无需处理DTD(这对浏览器来说并不重要,因为它们只是吞下标签汤),而—人类则更容易在源代码中进行读写。

就个人而言,我会坚持使用文字破折号,并确保我的字符编码设置保持一致。


13

他们是完全相同的角色。参见:http : //en.wikipedia.org/wiki/Dash

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

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


5
请注意,这仅适用于XML(对于XML)&8212;始终有效,而—取决于声明了该实体。
Flimm 2014年

10

—:: —::\u2014

当在JavaScript文本字符串中表示m短划线以输出到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代替-前缀表示:

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

1
与React一起很好地工作。
绿色

2

从W3网站上用于排版的通用HTML实体

为了便于移植,应保留Unicode实体引用,以用于某些将以UTF-8或UTF-16字符集编写的文档中。在所有其他情况下,应使用字母数字参考。

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


1

可能是因为使用数字代码更为通用,因为它是对html实体表中字符的直接引用,但我想它们都可以在任何地方使用。对于许多字符而言,第一种表示法非常容易记住。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.