为啥不应该使用 `'` 来转义单引号?
Posted
技术标签:
【中文标题】为啥不应该使用 `\'` 来转义单引号?【英文标题】:Why shouldn't `'` be used to escape single quotes?为什么不应该使用 `'` 来转义单引号? 【发布时间】:2011-01-06 05:25:53 【问题描述】:如When did single quotes in html become so popular? 和Jquery embedded quote in attribute 中所述,HTML 上的***条目说明如下:
当单引号字符 (') 用于引用属性值时,当它出现在属性值本身。
为什么不应该使用'
?另外,使用"
代替"
是否安全?
【问题讨论】:
'
is valid in HTML5.
注意IE8不支持'
。
***引用中缺少一个“not”,应该是“... when not used to quote an attribute value ...”。
哦,所以如果你不关心任何比 IE11 更早的东西,'
很好。
@Calculuswhiz 但当然,早在 2010 年,当有人问到这个问题时,这是一个有效的担忧......
【参考方案1】:
"
在有效HTML 4 entities 的官方列表中,但'
不在。
来自C.16. The Named Character Reference ':
命名字符引用
'
(撇号,U+0027)是 在 XML 1.0 中引入,但没有 出现在 HTML 中。作者应该 因此使用'
而不是'
在 HTML 4 中按预期工作 用户代理。
【讨论】:
"
在列表中,所以应该没问题。
今天发生在 IE8 机器上没有被解析,所以用户看到了代码。替换为 '解决了问题。
&aquot;不能代替‘’一个是单人,另一个是双人。
仅供参考:HTML5 确实支持这两个实体
@RichardTheKiwi 我猜你的意思是"
- 没有像&aquot;
这样的实体【参考方案2】:
"
在 HTML5 和 HTML4 中均有效。
'
在HTML5 中有效,但在HTML4 中无效。但是,无论如何,大多数浏览器都支持'
用于 HTML4。
【讨论】:
请注意,IE 8 不支持'
。【参考方案3】:
'
不是 HTML 4 标准的一部分。
"
不过,用起来没问题。
【讨论】:
当 &aquot; = " 不是 '?这就像建议用冒号代替分号... @Richardakacyberkiwi 把问题一直读到最后。 @Anon.:'
is now part of the HTML standard.
@RichardTheKiwi 我假设你的意思是 "
- 没有像 &aquot;
这样的实体【参考方案4】:
如果您需要编写语义正确的标记,即使在 HTML5 中,也必须不使用'
转义单引号。虽然,我可以想象你实际上是指撇号而不是单引号。
single quotes 和 apostrophes 在语义上并不相同,尽管它们看起来可能相同。
这是一个撇号。
如果您需要 HTML4 支持,请使用 '
插入它。 (已编辑)
在英式英语中,单引号是这样使用的:
“他让我‘试一试’”,我说。
引号成对出现。你可以使用:
<p><q>He told me to <q>give it a try</q></q>, I said.<p>
以语义正确的方式嵌套引号,将实际字符的替换推迟到渲染引擎。这种替换可能会受到CSS rules 的影响,例如:
q
quotes: '"' '"' '<' '>';
一篇关于语义正确标记的旧但看似仍然相关的文章:The Trouble With EM ’n EN (and Other Shady Characters)。
(已编辑)这曾经是:
如果您需要 HTML4 支持,请使用 ' 插入它。
但是,正如@James_pic 指出的那样,这不是直单引号,而是“单弯引号,对”。
【讨论】:
问题显然是关于使用撇号而不是引号。你为什么要发这个? 我清楚地看到了标题中的单引号。问题是为什么不应该使用 ’ 来转义它们。我回答这个问题是因为支持‘’不是唯一的问题。 单引号在美式英语中也是这样使用的。 这应该是公认的答案,因为它阐明了撇号和单引号不是一回事,这就是为什么您不应该使用撇号来包围 HTML 属性值。 在 Unicode 中,撇号 (') 被归类为引号,并且是规范中“直”引号的唯一形式。使用 ’ 的建议充其量是不完整的,因为那是“单曲引号,对”的字符。如果你真的想要语义正确,它应该用于右引号,而 ‘ ("Single curve quote, left") 应该用于左引号。【参考方案5】:如果真的需要单引号、撇号,可以使用
html | numeric | hex
‘ | ‘ | ‘ // for the left/beginning single-quote and
’ | ’ | ’ // for the right/ending single-quote
【讨论】:
这没有回答所提出的问题。以上是关于为啥不应该使用 `'` 来转义单引号?的主要内容,如果未能解决你的问题,请参考以下文章