我怎样才能逃脱单引号?

Posted

技术标签:

【中文标题】我怎样才能逃脱单引号?【英文标题】:How can I escape a single quote? 【发布时间】:2011-01-26 13:55:25 【问题描述】:

如何在 html 中转义 '(单引号)?

这是我尝试使用它的地方:

<input type='text' id='abc' value='hel'lo'>

上述代码的结果是“hel”填充在文本框中。我试图用\' 替换',但这就是我得到的。

<input type='text' id='abc' value='hel\'lo'>

上述代码的结果是“hel”填充在文本框中。

如何成功转义单引号?

【问题讨论】:

嘿 Ravi,这更像是一个 html 问题。我将问题重新标记为 HTML,但您可能想在问题中更改它。 【参考方案1】:

如果由于某种原因您无法转义撇号字符并且您无法将其更改为 HTML 实体(在我的情况下是针对特定的Vue.js 属性),您可以使用替换将其更改为不同的撇号字符来自 UTF-8 字符集,例如:

ʼ - U+02BC
’ - U+2019

【讨论】:

这是解决问题的有效方法,我经常这样做。我只是直接粘贴字符。【参考方案2】:

使用 javascript 内置函数 escape 和 unescape

例如

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

如果您有大量的 json 字符串化数据要在属性中使用,这将很有帮助

【讨论】:

escape 不是 unicode 安全的。该规范建议不要使用它。【参考方案3】:

将其表示为文本实体(ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'>

【讨论】:

【参考方案4】:

您可以使用 HTML 实体:

&amp;#39;' &amp;#34;" ...

更多信息,您可以查看Character entity references in HTML

【讨论】:

为什么应该对属性值使用双引号? @Pascal MARTIN:XML 也允许属性值使用单引号。 (见w3.org/TR/xml/#NT-AttValue) @Gumbo:哇!我认为我从未见过任何使用单引号包围属性值的 XML 文档;所以我不认为这实际上是有效的;;我只是(再次)在回答问题时学到了一些东西;所以,感谢那些 cmets! 我知道这是旧的,但我认为值得注意的是 " 有一个 HTML 实体:&amp;quot; @Pascal,w3c 验证器显示单引号对属性有效。并查看***.com/questions/2210430/…【参考方案5】:

您可以使用&amp;apos;(在 IE 中是不确定的)或&amp;#39;(应该可以在任何地方使用)。如需完整列表,请参阅W3C HTML5 Named Character References 或HTML entities table on WebPlatform.org。

【讨论】:

哇,我写这篇文章已经有一段时间了。感谢您的关注 - 我已经更新了 W3C 和 WebPlatform.org 上两个表格的链接。 这些工作“无处不在”,除了在 VXML 表达式属性中需要进一步转义,因为在 VXML 中,字符串变量值在属性定义的普通双引号内表示为单引号: 【参考方案6】:

您可以尝试使用:&amp;#145;

【讨论】:

【参考方案7】:

在 HTML 的上下文中,您需要使用 HTML 来表示该字符。对于 HTML,您需要使用 numeric character reference &amp;#39;&amp;#x27; 十六进制):

<input type='text' id='abc' value='hel&#39;lo'>

【讨论】:

但我没明白你说的context of html 是什么意思? @coding_idiot 看看不同的tokens a HTML parser may encounter during the parsing process。每个状态都有一组不同的解析规则,这些规则基于输入触发。并非每个州都允许字符引用。现在,如果您查看attribute value (single quoted),您可以看到&amp; 表示字符引用的开始。【参考方案8】:

可能是最简单的方法:

<input type='text' id='abc' value="hel'lo">

【讨论】:

以上是关于我怎样才能逃脱单引号?的主要内容,如果未能解决你的问题,请参考以下文章

怎样才能把单引号双引号这些特殊字符存到数据库里

如何在使用单引号的回声中使用单引号

如何在oracle中预测和转义单引号'

mysql怎么样才能插入单引号

带单引号和双引号的 JSON.parse 字符串?

带单引号和双引号的 JSON.parse 字符串?