apache的转义工具类StringEscapeUtils

发布时间 2023-11-29 08:27:52作者: 残城碎梦

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);
//输出:&lt;div&gt;Hello World!&lt;/div&gt;
//反转义html脚本
String unescapeHtml = StringEscapeUtils.unescapeHtml4("&lt;div&gt;Hello World!&lt;/div&gt;");
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);
//输出:&lt;port&gt;8080&lt;/port&gt;
//反转义xml脚本
String unescapeXml = StringEscapeUtils.unescapeXml("&lt;port&gt;8080&lt;/port&gt;");
System.out.println(unescapeXml);
//输出:<port>8080</port>