IE 不支持单引号(')的实体名称(')
2009-10-16 08:31
645 查看
最近在做全文检索模块功能的测试,发现对于特殊符号的处理还存在很大的问题。
有人说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 的所有特殊字符的实体编号和实体名称。
HTML and XHTML processors must support the five special characters listed in the table below:
Note: Entity names are case sensitive!
有人说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 的所有特殊字符的实体编号和实体名称。
主要是这段内容:
Reserved Characters in HTML
Some characters are reserved in HTML and XHTML. For example, you cannot use the greater than or less than signs within your text because the browser could mistake them for markup.HTML and XHTML processors must support the five special characters listed in the table below:
Character | Entity Number | Entity Name | Description |
---|---|---|---|
" | " | " | quotation mark |
' | ' | ' (does not work in IE) | apostrophe |
& | & | & | ampersand |
< | < | < | less-than |
> | > | > | greater-than |
相关文章推荐
- IE 不支持单引号(')的实体名称(&amp;apos;)
- IE 不支持单引号(')的实体名称(&amp;apos;)
- IE 不支持单引号(')的实体名称(&apos;)
- IE 不支持单引号(')的实体名称(&apos;)
- IE 不支持单引号(')的实体名称(&apos;)
- FAQ_IE 8中还不支持JavaScript通过appendChild("tr')方法添加Table行
- ie的的文档模式(ie7)不支持setAttribute(\'style\', \'\')方法
- 兼容IE & Firefox 的脚本改本属性值的检测方法 [ 不支持Chrome ]
- IE 10, HTML5 and jQuery 2.x - JavaScript runtime error: 'JSON' is undefined
- jqGrid不支持IE8的解决办法(Grid can not be used in this ('quirks') mode)
- IE can't move focus 问题
- IE 对CSS2.1的支持
- 如何解决ie8 不支持new Date('2012-11-10')的问题
- ODBC读取Excel错误 Microsoft Jet 数据库引擎找不到对象'Sheet1' 请确认对象是否存在,并正确地写出它的名称和路径
- ubuntu python2.7解决 UnicodeEncodeError: 'ascii' 支持utf8
- 背脊的IE \'\\u\' 就会中止js脚本的解释
- 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。
- thinkphp dbpdo.class.php 报错 throw_exception('PDO暂时不支持'.$this->dbType);
- (转自Mitchell Chu's Blog)定义文档兼容性,让IE按指定的版本解析我们的页面
- 关于IE8/firefox不支持添加到收藏夹代码javascript:window.external.AddFavorite(,'');