apache的转义工具类StringEscapeUtils
java中转义是指:将某些特殊字符转换为它在特定场景中原来的意义。
转义字符是指无法直接显示的字符。
常见的场景是:
- 同一字符在不同编码中表达形式不一样。
- 某些特定的字符在不同环境、不同语言中表达形式不一样。
其中org.apache.commons.lang.StringEscapeUtils已废弃,可以使用org.apache.commons.text.StringEscapeUtils替代。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.6</version>
</dependency>
转义Unicode编码
//转义为Unicode编码
String escape = StringEscapeUtils.escapeJava("古德猫宁");
//输出:\u53E4\u5FB7\u732B\u5B81
//反转义Unicode编码
String unescape = StringEscapeUtils.unescapeJava("\u53E4\u5FB7\u732B\u5B81");
//输出:古德猫宁
转义html脚本
//转义为html脚本
String escapeHtml = StringEscapeUtils.escapeHtml4("<div>Hello World!</div>");
System.out.println(escapeHtml);
//输出:<div>Hello World!</div>
//反转义html脚本
String unescapeHtml = StringEscapeUtils.unescapeHtml4("<div>Hello World!</div>");
System.out.println(unescapeHtml);
//输出:<div>Hello World!</div>
转义JS脚本
//转义JS脚本
String escapeJS = StringEscapeUtils.escapeEcmaScript("<script type=\"text/javascript\">alert('哈哈')<script>");
System.out.println(escapeJS);
//输出:<script type=\"text\/javascript\">alert(\'\u54C8\u54C8\')<script>
//反转义JS脚本
String unescapeJS = StringEscapeUtils.unescapeEcmaScript("<script>alert(\'哈哈\')<script>");
System.out.println(unescapeJS);
//输出:<script>alert('哈哈')<script>
转义CSV
String escapeCsv = StringEscapeUtils.escapeCsv("He said \"'I love you'\"");
System.out.println(escapeCsv);
//输出:"He said ""'I love you'"""
String unescapeCsv = StringEscapeUtils.unescapeCsv("\"He said \"\"'I love you'\"\"\"");
System.out.println(unescapeCsv);
//输出:He said "'I love you'
转义XML
//转义xml脚本
String escapeXml = StringEscapeUtils.escapeXml11("<port>8080</port>");
System.out.println(escapeXml);
//输出:<port>8080</port>
//反转义xml脚本
String unescapeXml = StringEscapeUtils.unescapeXml("<port>8080</port>");
System.out.println(unescapeXml);
//输出:<port>8080</port>
标签:
实用技巧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-11-29 请你谈谈关于IO同步、异步、阻塞、非阻塞的区别
2021-11-29 为什么需要消息队列?使用消息队列有什么好处?
2021-11-29 你能说说Java中Comparable和Comparator的区别吗