HTML特殊字符替换问题 html escape相关
2015-01-04 11:47
211 查看
在处理网页时经常会遇到这样的问题,后台得到的字符串数据包含网页HTML中的特殊字符,例如在页面上这样一句话,“你好・世界”在后台取到的是“你好·世界”。这是由于HTML对特殊字符进行了编码。
今天在取得前台form表单提交的数据时,就遇到了这样的问题。页面表单填的数据是正常的字符串“你好・世界”,传到后台以后却把・这个字符进行了编码,变成了·。
之前在做爬虫时处理这种问题通常是进行简单的替换,类似这样
google之后,果然没让我失望,这个工具就在apache的commons.lang包之中,是StringEscapeUtils工具类。
处理上述问题,只需要在后台java代码中进行如下处理即可。
StringEscapeUtils中还提供了许多其他的方法,比如escapeCsv/unescapeCsv,escapeJava/unescapeJava,escapeJavaScript/unescapeJavaScript等等,类似escapeHtml/unescapeHtml,方便对字符串其他情况的处理。escapeHtml指的是将字符串进行编码,unescapeHtml表示不编码也就是显示原始字符串。
真的要感谢造轮子的前人,使我们更方便地解决问题。我们也应该更充分得用好轮子,提高效率。有机会也去造轮子。也希望有一天随着技术不断发展,轮子已经完善到不需要用我们这种用轮子的人^_^
好吧,不瞎扯了,再说句相关的题外话,spring中也提供htmlEscape功能,可以用 <spring:htmlEscape>和<spring:escapeBody>标签;也可以在spring form的input标签中添加属性htmlEscape="false",完整方式如下
参考链接:
http://stackoverflow.com/questions/1265282/recommended-method-for-escaping-html-in-java
今天在取得前台form表单提交的数据时,就遇到了这样的问题。页面表单填的数据是正常的字符串“你好・世界”,传到后台以后却把・这个字符进行了编码,变成了·。
之前在做爬虫时处理这种问题通常是进行简单的替换,类似这样
String escaped = source.replace("<", "<").replace("&", "&");但是考虑到用户进行表单提交可能有很多种情况的特殊字符,一一列举各种特殊字符的情况再进行replace非常繁琐。而这种字符串问题也很常见,应该有成熟的工具包可以对其进行处理。
google之后,果然没让我失望,这个工具就在apache的commons.lang包之中,是StringEscapeUtils工具类。
处理上述问题,只需要在后台java代码中进行如下处理即可。
String escaped = StringEscapeUtilssource.unescapeHtml(source);escaped中的值就是正常的字符串“你好・世界”。
StringEscapeUtils中还提供了许多其他的方法,比如escapeCsv/unescapeCsv,escapeJava/unescapeJava,escapeJavaScript/unescapeJavaScript等等,类似escapeHtml/unescapeHtml,方便对字符串其他情况的处理。escapeHtml指的是将字符串进行编码,unescapeHtml表示不编码也就是显示原始字符串。
真的要感谢造轮子的前人,使我们更方便地解决问题。我们也应该更充分得用好轮子,提高效率。有机会也去造轮子。也希望有一天随着技术不断发展,轮子已经完善到不需要用我们这种用轮子的人^_^
好吧,不瞎扯了,再说句相关的题外话,spring中也提供htmlEscape功能,可以用 <spring:htmlEscape>和<spring:escapeBody>标签;也可以在spring form的input标签中添加属性htmlEscape="false",完整方式如下
<form:input path="title" htmlEscape="false"/>更详细的请查阅spring相关文档。
参考链接:
http://stackoverflow.com/questions/1265282/recommended-method-for-escaping-html-in-java
相关文章推荐
- 替换html特殊字符
- iPhone代码碎片:处理objective-c里html特殊字符显示问题的一个函数
- apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原
- html特殊字符编码问题导致的细节问题
- Objective-C之用C的字符来处理NSString相关的字符替换和拼接的问题
- 将用户输入的字符串转换为可换行、替换Html编码、无危害数据库特殊字符、去掉首尾空白、的安全方便代码
- JS中URL中的特殊字符问题:escape,encodeURI,encodeURIComponent
- python替换UTF-8编码文本中任意特殊字符,包括中文符号问题:大量文本,将其中的特殊字符用空
- 将用户输入的字符串转换为可换行、替换Html编码、无危害数据库特殊字符、去掉首尾空白、的安全方便代码
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- asp.net替换和恢复html特殊字符
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- 替换、恢复Html中的特殊字符
- 2015第23周四HTML特殊字符显示问题
- asp.net替换和恢复html特殊字符
- TextField htmlText 以及xml里"<" 和 ">" 等特殊字符的显示问题
- JS中URL中的特殊字符问题(escape,encodeURI,encodeURIComponent)
- JS中URL中的特殊字符问题(escape,encodeURI,encodeURIComponent)
- Objective-C之用C的字符来处理NSString相关的字符替换和拼接的问题
- java字符串特殊替换及无法比较字符问题