Java 字符串转 Unicode 编码
在 Java 中,有几种方法可以将字符串转换为 Unicode 编码表示,以下是几种常用的实现方式:

使用 String.format() 和 char 的十六进制表示
public class StringToUnicode {
public static void main(String[] args) {
String str = "你好,世界!Hello World!";
String unicodeStr = stringToUnicode(str);
System.out.println(unicodeStr);
}
public static String stringToUnicode(String str) {
StringBuilder unicode = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
unicode.append(String.format("\\u%04x", (int) c));
}
return unicode.toString();
}
}
输出示例:
\u4f60\u597d\uff0c\u4e16\u754c\uff01Hello World!
使用 Integer.toHexString() 和字符串拼接
public class StringToUnicode {
public static void main(String[] args) {
String str = "Java编程";
String unicodeStr = convertToUnicode(str);
System.out.println(unicodeStr);
}
public static String convertToUnicode(String str) {
StringBuilder unicode = new StringBuilder();
for (char c : str.toCharArray()) {
unicode.append("\\u").append(Integer.toHexString(c | 0x10000).substring(1));
}
return unicode.toString();
}
}
输出示例:
Java\u7f16\u7a0b
处理 ASCII 字符(可选)
如果希望只转换非 ASCII 字符,可以修改方法如下:
public static String stringToUnicodeSelective(String str) {
StringBuilder unicode = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c > 127) { // 非ASCII字符
unicode.append(String.format("\\u%04x", (int) c));
} else {
unicode.append(c);
}
}
return unicode.toString();
}
反向转换:Unicode 编码转字符串
如果需要将 Unicode 编码字符串转换回普通字符串:

public static String unicodeToString(String unicodeStr) {
StringBuilder sb = new StringBuilder();
String[] hex = unicodeStr.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
int data = Integer.parseInt(hex[i], 16);
sb.append((char) data);
}
return sb.toString();
}
注意事项
- Unicode 编码使用
\u后跟 4 位十六进制数表示 - 对于某些特殊字符(如 surrogate pairs),可能需要特殊处理
- 方法一和方法二都能正确处理基本多文种平面(BMP)内的字符
- 对于超出 BMP 的字符(如某些表情符号),Java 使用代理对(surrogate pairs)表示
方法可以根据具体需求选择使用,方法一最为简洁常用。

