1. 引入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
导包 import org.apache.commons.text.StringEscapeUtils;
2. UniCode 编解码
@Test
public void escapeUnicode() {
String name = "工程师";
String unicode = StringEscapeUtils.escapeJava(name);
String dest = StringEscapeUtils.unescapeJava(unicode);
System.out.println(unicode + "; " + dest);
}
打印结果:
\u5DE5\u7A0B\u5E08; 工程师
3. HTML 转义
- 转义字符(Escape Sequence)
- 转义的原因:'< >' 这类符号已经用来表示 HTML 标签
3.1 转义 html
@Test
public void escapeHtml() {
String origin = "<div>html demo</div>";
String dest = StringEscapeUtils.escapeHtml4(origin);
}
3.2 反转义 html
@Test
public void unescapeHtml() {
String input = "<div>html demo</div>";
String result = StringEscapeUtils.unescapeHtml4(input);
}
4. 转义XML
@Test
public void escapeXml() {
String xml = "<name>百知</name>";
String escapeXml = StringEscapeUtils.escapeXml11(xml);
String dest = StringEscapeUtils.unescapeXml(escapeXml);
System.out.println(escapeXml + ", " + dest);
}
打印结果:
<name>百知</name>, <name>百知</name>
5. 转义JSON
@Test
public void escapeJson() {
String jsonStr = "{\"id\":1000001, \"name\":\"Tinyspot\"}";
String escapeJson = StringEscapeUtils.escapeJson(jsonStr);
String dest = StringEscapeUtils.unescapeJava(escapeJson);
System.out.println(escapeJson + ", " + dest);
}
打印结果
{\"id\":1000001, \"name\":\"Tinyspot\"}, {"id":1000001, "name":"Tinyspot"}
网友评论