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

202
根据 When did single quotes in HTML become so popular?Jquery embedded quote in attribute中提到的,维基百科关于HTML的条目如下所述:
引号符('),当用于引用属性值时,在属性值本身内部出现时也必须被转义为''(在XHTML文档中应该不要使用'进行转义)。
为什么不能使用'进行转义呢?此外,"是否可以安全地用作"的替代品?

14
'在HTML5中是有效的。 - Zaz
7
请注意,IE8不支持' - Paul D. Waite
维基百科的引用中缺少一个“不”字,应该是“...当用于引用属性值时...”。 - Jake
哦,所以如果您不关心IE11之前的任何内容,那么'就可以了。 - General Grievance
@Calculuswhiz 当然,在2010年提出这个问题时,这是一个有效的关注点... - Mr Lister
5个回答

217
" 是官方认可的 HTML 4 实体字符,但是 ' 不在其中。
根据C.16. 命名字符引用 '
命名字符引用' (撇号, U+0027) 被引入 XML 1.0 标准中,但不包含在 HTML 中。在 HTML 4 的 用户代理 中,作者应该使用 ' 来代替 ',以达到期望的效果。

3
"""在列表中,所以应该没问题。 - Bennett McElwee
9
今天发生了一个问题,IE8浏览器无法解析'字符,导致用户看到了代码。用'替换解决了这个问题。 - Michele Gargiulo
12
"&aquot;不能替代',因为一个是单引号,另一个是双引号。" - RichardTheKiwi
3
FYI:HTML5支持两种实体。 - Tarol
@RichardTheKiwi 我猜你是指 " - 并不存在 &aquot; 这样的实体。 - Jake

48

"在HTML5和HTML4中都是有效的。

'HTML5中是有效的,但在HTML4中不是。然而,大多数浏览器仍支持在HTML4中使用'


13
请注意,IE 8不支持 ' - Paul D. Waite
2
别因为我说了这句话而开枪——谁在乎IE8呢... - undefined

35

' 不是 HTML 4 标准的一部分。

然而," 是标准的一部分,所以可以放心使用。


8
当 &aquot; 不是 ' 而是 " 时,这怎么可能是一个答案呢?这就像是建议用冒号替换分号一样不合适。 - RichardTheKiwi
12
请您将问题读到最后。 - ColBeseder
4
“@Anon.: '''现在已成为HTML标准的一部分。” - Paul D. Waite
@RichardTheKiwi 我猜你指的是 " - &aquot; 并不是一个有效的实体。 - Jake

25
如果您需要编写语义正确的标记,即使在HTML5中,也必须不要使用'来转义单引号。虽然我可以想象你实际上是指撇号而不是单引号。 单引号撇号在语义上不同,尽管它们看起来可能相同。

这是一个撇号。

如果您需要支持HTML4,请使用'来插入它。(经编辑) 在英国英语中,单引号用于此类情况:

"他告诉我'试一试'",我说。

引用成对出现。您可以使用: <p><q>他告诉我<q>试一试</q></q>,我说。<p> 为了以语义正确的方式嵌套引号,推迟实际字符的替换到渲染引擎。这种替换可以受到 CSS规则 的影响,例如:
q {
  quotes: '"' '"' '<' '>';
} 

一篇关于语义正确标记的旧文章似乎仍然相关:EM和EN的问题(以及其他可疑字符)

(已编辑) 这曾经是:

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

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


问题显然是关于使用撇号而不是引号的。你为什么要发表这个? - Alex Skrypnyk
11
我看到标题中有一个单引号。问题是为什么不应该用 ' 转义它们。我的回答是因为对 ' 的支持并不是唯一的问题。 - R. Schreurs
4
在美式英语中,单引号也是这样使用的。 - Rob_vH
这应该是被接受的答案,因为它澄清了撇号和单引号不是同一件事,这就是为什么你不应该使用撇号来包含HTML属性值。 - delroh
2
在Unicode中,撇号字符(')被视为引号,并且是规范中“直接” 引号标记的唯一形式。建议使用’最多也只是不完整的,因为那个字符是“单曲线引号,右侧”的标志。如果真的要达到语义上的正确性,应该将其用于右引号标记,而‘(“单曲线引号,左侧”)应该用于左引号标记。 - James_pic
1
大部分的回答与问题无关,问题是关于HTML标记语法,而不是英语语法。 - Jake

2
如果您确实需要单引号、撇号,您可以使用:
html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote

1
这并没有回答所提出的问题。 - Jake

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