$#39; ----单引号(兼容IE)
" -----双引号
在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<input value="Test" type="button" οnclick="alert(""OK"");" />
IE提示出错后,再漫不经心地改为:
<input value="Test" type="button" οnclick="alert(\"OK\");" />
结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<input value="" type="button" οnclick="alert('OK');" />
但为什么javascript中的转义字符\没有效果了呢?
后来找到一段正常的代码:
<input value="Test" type="button" οnclick="alert("OK");" />
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。
两个双引号的做法是vbScript的,\"这种做法则是javascript的,而HTML的,则是用",
此外还可以使用:"、'。
下面列出各种表达方法:
<html>
< body>
< input value="外双引号内双引号-错误" type="button" οnclick="alert("OK");" /><br />
< input value="外单引号内单引号-错误" type="button" οnclick='alert('OK');' /><br />
< input value="两个双引号-错误" type="button" οnclick="alert(""OK"");" /><br />
< input value="两个单引号-错误" type="button" οnclick="alert(''OK'');" /><br />
< input value="\+双引号-错误" type="button" οnclick="alert(\"OK\");" /><br />
< input value="\+单引号-错误" type="button" οnclick="alert(\'OK\');" /><br />
< input value="外双引号内单引号-OK" type="button" οnclick="alert('OK');" /><br />
< input value="外单引号内双引号-OK" type="button" οnclick='alert("OK");' /><br />
< input value="外部不使用引号-OK" type="button" οnclick=alert('OK');alert("OK"); /><br />
< input value="HTML转义字符"(& # 3 4 ;)-OK" type="button" οnclick="alert("OK");" /><br />
< input value="HTML转义字符'(& # 3 9 ;)-OK" type="button" οnclick="alert('OK');" /><br />
< input value="HTML转义字符"(& # x 2 2 ;)-OK" type="button" οnclick="alert('OK');" /><br />
< input value="HTML转义字符'(& # x 2 7 ;)-OK" type="button" οnclick="alert('OK');" /><br />
< input value="HTML转义字符"(& q u o t ;)-OK" type="button" οnclick="alert("OK");" /><br />
< input value="HTML转义字符'(& a p o s ;)-IE错误"type="button" οnclick="alert('OK');" /><br />
<input value="其它\\-错误" type="button" οnclick="alert(\\"OK\\");" /><br />
< input value="其它\& # 3 4 ;-错误" type="button" οnclick="alert(\"OK\");" /><br />
< /body>
< /html>
最近在做全文检索模块功能的测试,发现对于特殊符号的处理还存在很大的问题。
有人说Spring本身提供了对HTML、javascript、sql语句的转码工具类,但是测试了一下发现其HtmlUtils.htmlEscape()对单引号并没做处理,只是转码了以下几个特殊字符:
-
&:&
-
" :"
-
< :<
-
> :>
后来采用replace替换为('),IE浏览器里依然没有起到作用,只好在google里测试一下查看源代码,发现其转码成(')
今天看到下面这篇文章才明白:
转:
http://blog.huachen.me/single-quote-ie-html-entity
在 (x)HTML 中,一些特殊字符应该进行 HTML 实体转义。
常见的有:
&
(and)、
"
(双引号)、
'
(单引号)、
<
(小于号)、
>
(大于号),这些在 (x)HTML 文档内容中应该分别转换成:
&
、
"
、
'
、
<
和
>
。
但是问题就来了,为什么上面单引号的转义和别的特殊字符不同呢?为什么唯独单引号用的是实体编号('),而其它的用的是实体名称(')呢?
原因就是
IE 浏览器暂时不支持单引号的实体名称,IE 浏览器暂时只支持单引号的实体编号
。
这也是 PHP htmlspecialchars 函数把单引号转义成 ',而不是 ' 的原因。
另外,
百度也不支持单引号的实体名称
,这个是我在
我的博客
在百度搜索结果中看出来的(现在我已经把单引号改成实体编号的形式了)。
这里可以查看
HTML 的所有特殊字符的实体编号和实体名称
。
|
Character
|
Entity Number
|
Entity Name
|
Description
|
|
"
|
"
|
"
|
quotation mark
|
|
'
|
'
|
'
(does not work in IE)
|
apostrophe
|
|
&
|
&
|
&
|
ampersand
|
|
<
|
<
|
<
|
less-than
|
|
>
|
>
|
>
|
greater-than
|
' ----单引号" -----双引号在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:IE提示出错后,再漫不经心地改为:结果还是出错。这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:但为什么javascript中的转义字符\没有效果了呢?后来找到一段正常的代码:这时才理解
$hello= 3;
echo "hello is $hello"; // 打印结果:hello is 3
echo 'hello is $hello'; // 打印结果: hello is $hello
echo "hello is $hello\n"; // 打印结果: hello is 2 (同时换行)
今天用markdown写笔记的时候,发现__init__.py这样的双下划线会被转义成其他效果,必须使用_来代替'_'才能展示为下划线的效果,下面是网上某位大佬收集的
HTML
转义字符
大全,仅此记录。
以下内容转自:
HTML
转义字符
大全
ISO Latin-1字符集:	 — 制表符Horizontal tab — 换行Line feed&#...
DataTable批量插入数据库
蚂蚁的奔跑
DataTable批量插入数据库
蚂蚁的奔跑: