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>