【问题标题】: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 上的维基百科条目说明如下:

当单引号字符 (') 用于引用属性值时,当它出现在属性值本身。

为什么不应该使用'?另外,使用" 代替" 是否安全?

【问题讨论】:

  • 注意IE8不支持'
  • 维基百科引用中缺少一个“not”,应该是“... when not used to quote an attribute value ...”。
  • 哦,所以如果你不关心任何比 IE11 更早的东西,' 很好。
  • @Calculuswhiz 但当然,早在 2010 年,当有人问到这个问题时,这是一个有效的担忧......

标签: html escaping quotes


【解决方案1】:

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

single quotesapostrophes 在语义上并不相同,尽管它们看起来可能相同。

这是一个撇号。

如果您需要 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") 应该用于左引号。
【解决方案2】:

如果真的需要单引号、撇号,可以使用

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

【讨论】:

  • 这不能回答所提出的问题。
【解决方案3】:

&amp;quot; 在有效HTML 4 entities 的官方列表中,但&amp;apos; 不在。

来自C.16. The Named Character Reference '

命名字符引用&amp;apos; (撇号,U+0027)是 在 XML 1.0 中引入,但没有 出现在 HTML 中。作者应该 因此使用&amp;#39; 而不是 &amp;apos; 在 HTML 4 中按预期工作 用户代理。

【讨论】:

  • &amp;quot; 在列表中,所以应该没问题。
  • 今天发生在 IE8 机器上没有被解析,所以用户看到了代码。替换为 '解决了问题。
  • &aquot;不能代替‘​​’一个是单人,另一个是双人。
  • 仅供参考:HTML5 确实支持这两个实体
  • @RichardTheKiwi 我猜你的意思是&amp;quot; - 没有像&amp;aquot;这样的实体
【解决方案4】:

&amp;apos; 不是 HTML 4 标准的一部分。

不过,&amp;quot; 可以使用。

【讨论】:

  • 当 &aquot; = " 不是 '?这就像建议用冒号代替分号...
  • @Richardakacyberkiwi 把问题一直读到最后。
  • @RichardTheKiwi 我假设你的意思是 &amp;quot; - 没有像 &amp;aquot; 这样的实体
【解决方案5】:

&amp;quot; 在 HTML5 和 HTML4 中均有效。

&amp;apos;HTML5 中有效,但在HTML4 中无效。但是,大多数浏览器无论如何都支持&amp;apos; 用于 HTML4。

【讨论】:

  • 请注意,IE 8 不支持&amp;apos;
猜你喜欢
  • 1970-01-01
  • 2021-07-11
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 2023-01-15
  • 2014-10-07
  • 1970-01-01
相关资源
最近更新 更多