分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

js、html中的单引号、双引号及其转义使用

发布时间:2023-09-06 02:12责任编辑:郭大石关键词:js

摘自:http://blog.csdn.net/changhong009/article/details/46004343

'     ----单引号

$#39;        ----单引号(兼容IE)

"      -----双引号

在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<input value="Test" type="button" onclick="alert(""OK"");" />
IE提示出错后,再漫不经心地改为:
<input value="Test" type="button" onclick="alert(\"OK\");" />
结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<input value="" type="button" onclick="alert(‘OK‘);" />
但为什么javascript中的转义字符\没有效果了呢?

后来找到一段正常的代码:
<input value="Test" type="button" onclick="alert(&quot;OK&quot;);" />
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。

两个双引号的做法是vbScript的,\"这种做法则是javascript的,而HTML的,则是用&quot;,此外还可以使用:"、‘。

下面列出各种表达方法:
<html>
< body>
< input value="外双引号内双引号-错误" type="button" onclick="alert("OK");" /><br />
< input value="外单引号内单引号-错误" type="button" onclick=‘alert(‘OK‘);‘ /><br />
< input value="两个双引号-错误" type="button" onclick="alert(""OK"");" /><br />
< input value="两个单引号-错误" type="button" onclick="alert(‘‘OK‘‘);" /><br />
< input value="\+双引号-错误" type="button" onclick="alert(\"OK\");" /><br />
< input value="\+单引号-错误" type="button" onclick="alert(\‘OK\‘);" /><br />
< input value="外双引号内单引号-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="外单引号内双引号-OK" type="button" onclick=‘alert("OK");‘ /><br />
< input value="外部不使用引号-OK" type="button" onclick=alert(‘OK‘);alert("OK"); /><br />
< input value="HTML转义字符"(& # 3 4 ;)-OK" type="button" onclick="alert("OK");" /><br />
< input value="HTML转义字符‘(& # 3 9 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML转义字符"(& # x 2 2 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML转义字符‘(& # x 2 7 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML转义字符&quot;(& q u o t ;)-OK" type="button" onclick="alert(&quot;OK&quot;);" /><br />
< input value="HTML转义字符&apos;(& a p o s ;)-IE错误"type="button" onclick="alert(&apos;OK&apos;);" /><br />

<input value="其它\\-错误" type="button" onclick="alert(\\"OK\\");" /><br />
< input value="其它\& # 3 4 ;-错误" type="button" onclick="alert(\"OK\");" /><br />
< /body>
< /html>

最近在做全文检索模块功能的测试,发现对于特殊符号的处理还存在很大的问题。

有人说Spring本身提供了对HTML、javascript、sql语句的转码工具类,但是测试了一下发现其HtmlUtils.htmlEscape()对单引号并没做处理,只是转码了以下几个特殊字符:

  • &:&amp;
  • " :&quot;
  • < :&lt;
  • > :&gt;

    后来采用replace替换为(&apos;),IE浏览器里依然没有起到作用,只好在google里测试一下查看源代码,发现其转码成(&#39;)

    今天看到下面这篇文章才明白:

    转:http://blog.huachen.me/single-quote-ie-html-entity

    在 (x)HTML 中,一些特殊字符应该进行 HTML 实体转义。

    常见的有:&(and)、"(双引号)、(单引号)、<(小于号)、>(大于号),这些在 (x)HTML 文档内容中应该分别转换成:&amp;&quot;&#39;&lt; 和 &gt;

    但是问题就来了,为什么上面单引号的转义和别的特殊字符不同呢?为什么唯独单引号用的是实体编号(&#39;),而其它的用的是实体名称(&apos;)呢?

    原因就是 IE 浏览器暂时不支持单引号的实体名称,IE 浏览器暂时只支持单引号的实体编号

    这也是 PHP htmlspecialchars 函数把单引号转义成 &#39;,而不是 &apos; 的原因。

    另外,百度也不支持单引号的实体名称,这个是我在我的博客在百度搜索结果中看出来的(现在我已经把单引号改成实体编号的形式了)。

    这里可以查看 HTML 的所有特殊字符的实体编号和实体名称

CharacterEntity NumberEntity NameDescription
"&#34;&quot;quotation mark
&#39;&apos; (does not work in IE)apostrophe 
&&#38;&amp;ampersand
<&#60;&lt;less-than
>&#62;&gt;greater-than

js、html中的单引号、双引号及其转义使用

原文地址:https://www.cnblogs.com/-zrj/p/9567295.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved