Html特殊字符转义
我们都知道,在html中遇到>、<、空格等字符显示处理是会将其转为>、<、 来展示使用,以便兼容和不影响既有页面的html代码里的成对标签的正常加载,与之相同的还有:
等等... ...
那么我们就会遇到如下业务场景,比如我们通过后台获取到的页面值为转义后>、<等, 而实际我们需要是>和<,这是我们就需要通过一个Java的类做下转义处理。
//import org.springframework.web.util.HtmlUtils;String sourceStr = "> <";System.out.println("原始 sourceStr = " + sourceStr);//将转义后的html解析成原本的值String targetStr = HtmlUtils.htmlUnescape(sourceStr);System.out.println("目标 targetStr = " + targetStr );
输出结果:
原始 sourceStr = > <
目标 targetStr = ><
反过来我们也可以将这些特殊字符转以后返回给相应业务接口。
//import org.springframework.web.util.HtmlUtils;String sourceStr = "> <";System.out.println("原始 sourceStr = " + sourceStr);//将特殊字符进行转义处理String targetStr = HtmlUtils.htmlEscape(sourceStr);System.out.println("目标 targetStr = " + targetStr );
输出结果:
原始 sourceStr = > <
目标 targetStr = ><
Java特殊字符转义
同理,针对java的一些特殊字符串的转义处理与上面项目,区别在与所用的到类和方式为:StringEscapeUtils。
等等... ...
针对以上Java特殊字符的转义,我们通过下面的方法进行处理。
//import mons.lang.StringEscapeUtils;String sourceStr = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\":\\\'123456\\\'}";System.out.println("原始 sourceStr = " + sourceStr);String targetStr = StringEscapeUtils.unescapeJava(sourceStr);System.out.println("目标 targetStr = " + targetStr);
输出结果:
原始 targetStr = {\"name\":\"spy\",\"id\":'123456'}
目标 sourceStr = {"name":"spy","id":'123456'}
反过来我们也可以将这些特殊字符转以后返回给相应业务接口。
//import mons.lang.StringEscapeUtils;String sourceStr = "{\"name\":\"spy\",\"id\":\'123456\'}";System.out.println("原始 sourceStr = " + sourceStr);String targetStr = StringEscapeUtils.escapeJava(sourceStr);System.out.println("目标 targetStr = " + targetStr);
输出结果:
原始 sourceStr = {"name":"spy","id":'123456'}
目标 targetStr = {\"name\":\"spy\",\"id\":'123456'}
PS:当然我们也可以通过String.replace、replaceAll等进行手动处理。
写完这个笔记保存时发现,CSDN也不能正常保存标题中包含的<和>等特殊字符,转义后>和<有原样显示了,看,这就是应用场景!