为什么不应该使用`来转义单引号?


158

如中所述,HTML中的单引号什么时候变得如此流行?Jquery在attribute中嵌入引号, HTML上的Wikipedia条目表示以下内容:

当单引号字符(')用于引用属性值时,当它出现在属性值本身中时,也必须转为''(不应'XHTML文档中除外)。

为什么不'应该使用?另外,可以"安全地使用它"吗?



7
注意IE8不支持'
Paul D. Waite

Answers:


178

"在有效HTML 4实体的正式列表中,但'不在。

C.16。命名字符参考'

' XML 1.0中引入了命名字符参考(撇号U + 0027),但HTML中未出现。因此,作者应使用'而不是 '在HTML 4用户代理中按预期工作。


3
"虽然在列表中,所以应该可以。
Bennett McElwee,2010年

9
今天发生在IE8机器上 未解析,因此用户可以看到代码。替换为' 解决了问题。
Michele Gargiulo 2012年

9
&aquot; 不能替代‘ 作为一个单身,另一个双身。
RichardTheKiwi 2012年

仅供参考:HTML5确实支持两个实体
Tarol



17

如果即使在HTML5中也需要编写语义正确的标记,则不得使用'转义单引号。虽然,我可以想象您实际上是指撇号而不是单引号。

尽管单引号撇号看起来可能相同,但它们在语义上并不相同。

这是一个撇号。

'如果需要HTML4支持,请使用插入它。(编辑)

在英式英语中,单引号的用法如下:

我说:“他告诉我'尝试一下'。”

行情成对出现。您可以使用:

<p><q>He told me to <q>give it a try</q></q>, I said.<p>

以语义正确的方式嵌套引号,从而将实际字符的替换推迟到呈现引擎。然后,这种替换会受到CSS规则的影响,例如:

q {
  quotes: '"' '"' '<' '>';
} 

一篇关于语义正确标记的古老但看似仍然相关的文章:EM'n EN(和其他可疑字符)的麻烦

(编辑)以前是:

如果需要HTML4支持,请使用'插入。

但是,正如@James_pic指出的那样,这不是直的单引号,而是“单弯的引号,对”。


问题显然是关于使用撇号而不是引号。你为什么要张贴这个?
Alex Skrypnyk

9
我清楚地在标题中看到了单引号。问题是为什么逃脱它们不应该用‘a’来完成。我之所以回答是因为对“ 不是唯一的问题。
R. Schreurs

3
美国英语也使用单引号。
Rob_vH

这应该是可以接受的答案,因为它阐明了撇号和单引号不是同一回事,这就是为什么您不应该使用撇号来封装HTML属性值的原因。
delroh

在Unicode中,撇号(&#39;)被归类为引号,并且是规范中“直”引号的唯一形式。使用&#8217;的建议 最多是不完整的,因为这是“单弯引号,右”的字符。如果您确实要保证语义正确性,则应将其用于右引号,而&#8216; (“单弯引号,左”)应用于左引号。
James_pic

2

如果您确实需要单引号,撇号,则可以使用

html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote

-2

就我而言,尝试在文本中使用引号是错误的Time's up!。Eslint发出警告。

为了解决这个问题,我用替换了quote Time&apos;s up!。结果如预期

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.