转义工具 - EscapeUtil
# 转义工具 - EscapeUtil
简介
EscapeUtil
是 Hutool 提供的一个用于字符串转义和反转义的工具类,常用于处理需要进行 URL 编码、数据传输等需要转义特殊字符的场景。EscapeUtil
类似于 JavaScript 中的 escape()
和 unescape()
函数,可以对字符串中的空格符、标点符号、特殊字符等进行编码转换,同时也支持 HTML 特殊字符的转义和反转义。
# 1. 将字符串进行转义编码
escape
方法用于将字符串中的非 ASCII 字符和特殊字符转换为 %xx
格式的字符编码,以便进行安全传输和存储。
示例代码:
import cn.hutool.core.util.EscapeUtil;
public class EscapeUtilExample {
public static void main(String[] args) {
// 原始字符串
String originalStr = "Hello, 你好! 123 + - _ @ /";
// 对字符串进行转义编码
String escapedStr = EscapeUtil.escape(originalStr);
System.out.println("转义后的字符串: " + escapedStr);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
参数说明:
escape(String content)
content
:要转义的原始字符串,不能为null
。- 返回值:转义后的字符串,其中非 ASCII 字符和特殊字符被转换为
%xx
格式的字符编码。
开发场景:
- 在处理需要 URL 编码的数据或需要将字符串进行安全传输和存储的场景中,使用该方法对字符串进行转义。
# 2. 将转义编码的字符串解码为原始字符串
unescape
方法用于将已经转义的字符串还原为原始格式。此方法可以将 %xx
格式的编码转换回原始字符。
示例代码:
import cn.hutool.core.util.EscapeUtil;
public class EscapeUtilExample {
public static void main(String[] args) {
// 已转义的字符串
String escapedStr = "Hello%2C%20%E4%BD%A0%E5%A5%BD%21%20123%20%2B%20-%20_%20@%20%2F";
// 对字符串进行反转义解码
String unescapedStr = EscapeUtil.unescape(escapedStr);
System.out.println("解码后的字符串: " + unescapedStr);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
参数说明:
unescape(String content)
content
:要解码的转义字符串,不能为null
。- 返回值:解码后的原始字符串。
开发场景:
- 在接收经过 URL 编码的数据或处理需要反转义的字符串内容时,可以使用该方法将数据解码为原始格式。
# 3. 安全的反转义解码
safeUnescape
方法用于安全地解码字符串。当输入的字符串没有被转义时,直接返回原文,避免错误解码。
示例代码:
import cn.hutool.core.util.EscapeUtil;
public class EscapeUtilExample {
public static void main(String[] args) {
// 非转义的普通字符串
String originalStr = "Hello, 你好! 123 + - _ @ /";
// 对字符串进行安全反转义解码
String safeUnescapedStr = EscapeUtil.safeUnescape(originalStr);
System.out.println("安全解码后的字符串: " + safeUnescapedStr);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
参数说明:
safeUnescape(String content)
content
:要安全解码的字符串,不能为null
。- 返回值:如果字符串被转义,则返回解码后的字符串;如果未被转义,则返回原文。
开发场景:
- 在处理可能包含混合转义和未转义数据的场景中,可以使用该方法确保数据的正确解码。
# 4. HTML 特殊字符的转义和反转义
escapeHtml
方法用于将字符串中的特殊 HTML 字符(如 <
、>
、&
等)转义为实体编码,而 unescapeHtml
方法用于将 HTML 实体编码还原为普通字符。
示例代码:
import cn.hutool.core.util.EscapeUtil;
public class EscapeUtilExample {
public static void main(String[] args) {
// 原始 HTML 字符串
String originalHtml = "<div>Hello & Welcome!</div>";
// 对 HTML 字符串进行转义
String escapedHtml = EscapeUtil.escapeHtml(originalHtml);
System.out.println("转义后的 HTML: " + escapedHtml);
// 对转义后的 HTML 字符串进行反转义
String unescapedHtml = EscapeUtil.unescapeHtml(escapedHtml);
System.out.println("反转义后的 HTML: " + unescapedHtml);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
参数说明:
escapeHtml(String content)
content
:要转义的原始 HTML 字符串,不能为null
。- 返回值:转义后的 HTML 实体编码字符串。
unescapeHtml(String content)
content
:要反转义的 HTML 实体编码字符串,不能为null
。- 返回值:反转义后的普通字符字符串。
开发场景:
- 在处理用户输入的 HTML 内容、生成安全的网页内容时,使用这些方法可以防止 XSS 攻击或还原被编码的 HTML 实体。
总结
EscapeUtil
工具类在字符串转义和反转义方面功能强大,适用于多种场景,如 URL 编码、HTML 编码、安全传输等。通过这些方法,开发者可以轻松应对各种需要编码和解码的需求。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08