在 Java 里**“Unicode 统一码解码”**一般指把 Unicode 转义形式(如 \u4E2D\u6587)还原成真正的字符(如“中文”)。下面分几种常见情况说明。
\uXXXX 这种 Unicode 转义解码String s = "\\u4E2D\\u6587"; // 实际内容是 \u4E2D\u6587
public static String decodeUnicode(String str) {
StringBuilder sb = new StringBuilder();
int i = 0;
while (i < str.length()) {
if (i + 5 < str.length()
&& str.charAt(i) == '\\'
&& str.charAt(i + 1) == 'u') {
String hex = str.substring(i + 2, i + 6);
char ch = (char) Integer.parseInt(hex, 16);
sb.append(ch);
i += 6;
} else {
sb.append(str.charAt(i));
i++;
}
}
return sb.toString();
}
public static void main(String[] args) {
String s = "\\u4E2D\\u6587";
System.out.println(decodeUnicode(s)); // 输出:中文
}
\uString s = "\u4E2D\u6587";
System.out.println(s); // 中文
✅ 这是 Java 编译器自动处理的
❌ 不能用于从文件 / 网络 / JSON 里读到的字符串
name=\u4E2D\u6587
Properties prop = new Properties();
prop.load(new FileInputStream("test.properties"));
System.out.println(prop.getProperty("name")); // 中文
✅ Properties.load() 会自动解码 Unicode
\u4e2d)String json = "{\"text\":\"\\u4E2D\\u6587\"}";
Jackson 会自动转成:
{ "text": "中文" }
✅ 不需要手动处理
char / String 本身就是 Unicode\uXXXXbyte[] bytes = "中文".getBytes(StandardCharsets.UTF_8);
String s = new String(bytes, StandardCharsets.UTF_8);
| 场景 | 是否需要手动解码 |
|---|---|
源码中 \u4E2D |
❌ 编译器自动 |
字符串 \u4E2D |
✅ 需手动 |
| Properties | ❌ 自动 |
| JSON | ❌ 自动 |
| UTF-8 字节 | ✅ new String(bytes, charset) |
如果你能贴出具体字符串来源(文件 / JSON / 网络 / 数据库 / 日志),我可以给你最合适的解码方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。