在 Java 里,“Unicode 统一码(Unicode)”的解析通常有三种常见含义,我分别说明,并给出示例。
例如字符串:
\u4E2D\u6587
想解析成:
中文
Java 源码里的 \uXXXX 会在编译时自动解析:
String s = "\u4E2D\u6587";
System.out.println(s); // 中文
✅ 这是编译器行为,不是运行时代码解析。
如果 \u4E2D 是字符串内容(比如从文件、网络读取),Java 不会自动解析。
import org.apache.commons.text.StringEscapeUtils;
String s = "\\u4E2D\\u6587";
String result = StringEscapeUtils.unescapeJava(s);
System.out.println(result); // 中文
依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
public static String parseUnicode(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (i + 5 < str.length() &&
str.charAt(i) == '\\' && str.charAt(i + 1) == 'u') {
String hex = str.substring(i + 2, i + 6);
char c = (char) Integer.parseInt(hex, 16);
sb.append(c);
i += 5;
} else {
sb.append(str.charAt(i));
}
}
return sb.toString();
}
String s = "中";
int codePoint = s.codePointAt(0);
System.out.println(Integer.toHexString(codePoint)); // 4e2d
import java.text.Normalizer;
String s = "é"; // 可能是 e + ́
String normalized = Normalizer.normalize(s, Normalizer.Form.NFC);
用于:
❌ Java 运行时不会自动解析 \uXXXX
❌ \u 不是“编码”,是 Unicode 转义写法
✅ Unicode 本质是“码点(code point)”
如果你是指:
可以告诉我具体场景,我可以给更精确的代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。