最近在做全文检索模块功能的测试,发现对于特殊符号的处理还存在很大的问题。
有人说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 htmlspecialchar

博客探讨了在全文检索模块测试中遇到的问题,即IE浏览器不支持单引号(')的HTML实体名称(&apos;)。文章提到Spring的HtmlUtils.htmlEscape()未处理单引号,而应当使用实体编号(')而非实体名称(')。该问题源于IE浏览器的兼容性,PHP htmlspecialchars函数也遵循相同策略。此外,百度搜索结果同样不支持单引号的实体名称。
最低0.47元/天 解锁文章
2882





