IE 不支持单引号(')的实体名称(')

20 篇文章 0 订阅
17 篇文章 0 订阅

转载于:http://blog.csdn.net/foamflower/article/details/4678312


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

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

  • &:&
  • " :"
  • < :&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 的所有特殊字符的实体编号和实体名称

    主要是这段内容:

    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
    " &#34; &quot; quotation mark
    ' &#39; &apos; (does not work in IE) apostrophe 
    & &#38; &amp; ampersand
    < &#60; &lt; less-than
    > &#62; &gt; greater-than

    Note: Entity names are case sensitive!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值