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

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
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote

【讨论】:

这没有回答所提出的问题。

以上是关于为啥不应该使用 `'` 来转义单引号?的主要内容,如果未能解决你的问题,请参考以下文章

(实用篇)PHP中单引号与双引号的区别分析

PHP教程:PHP中单引号与双引号的区别分析

php中单引号和双引号的区别,哪个速度更快?为啥?

我应该对单引号使用 php 引号转义还是在数组中使用双引号?

oracle 字符串 单引号

Oracle中的单引号怎么转义