在 Java 里,“Unicode 转换”通常指 字符串 ↔ Unicode 转义序列(\uXXXX) 之间的互相转换。下面按常见场景给你说明。
Java 中 \u 表示 Unicode 码点,例如:
\u4e2d = 中
\u6587 = 文
Java 编译器在 编译阶段 就会把 \u 转义成对应字符。
public class UnicodeUtil {
public static String toUnicode(String str) {
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (c > 127) {
sb.append(String.format("\\u%04x", (int) c));
} else {
sb.append(c);
}
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(toUnicode("中文"));
}
}
输出:
\u4e2d\u6587
import org.apache.commons.text.StringEscapeUtils;
String result = StringEscapeUtils.escapeJava("中文");
System.out.println(result);
输出:
\u4e2d\u6587
import java.io.*;
import java.util.Properties;
public class UnicodeDecode {
public static String unicodeToStr(String unicode) throws Exception {
Properties p = new Properties();
String input = "k=" + unicode;
p.load(new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8)));
return p.getProperty("k");
}
public static void main(String[] args) throws Exception {
System.out.println(unicodeToStr("\\u4e2d\\u6587"));
}
}
输出:
中文
import java.util.regex.*;
public class UnicodeDecode {
public static String unicodeToStr(String str) {
Pattern pattern = Pattern.compile("\\\\u([0-9a-fA-F]{4})");
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
int code = Integer.parseInt(matcher.group(1), 16);
matcher.appendReplacement(sb, String.valueOf((char) code));
}
matcher.appendTail(sb);
return sb.toString();
}
public static void main(String[] args) {
System.out.println(unicodeToStr("\\u4e2d\\u6587"));
}
}
✅ Java 的 char 和 String 本身就是 UTF-16(Unicode)
String s = "中文";
System.out.println(s.length()); // 2
所以:
❌ 错误理解:
“Java 字符串不是 Unicode,需要转换”
✅ 正确理解:
Java 字符串是 Unicode,\uXXXX 只是 文本表示形式
| 需求 | 推荐方式 |
|---|---|
| 中文 → \uXXXX | 手动循环 / Apache Commons |
| \uXXXX → 中文 | Properties / 正则 |
| 字符编码问题 | UTF-8 / UTF-16 |
| 理解原理 | Java String 就是 Unicode |
如果你有 具体场景(如:
✅ JSON 中的 Unicode
✅ 文件读写乱码
✅ 网络传输
✅ 数据库存储)
可以把场景贴出来,我可以给你更精准的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。