在 java 中将 unicode 转换为它的实际中文符号

Convert a unicode into it's actual chinese symbol in java

我想把这个U+2E93转换成java中对应的中文符号。我尝试使用这种方法。

String encoding = "UTF-8";
String cp = "U+2E93".subString(2);
int cpVal=Integer.parseInt(cp,16);
String tempString = Character.toString((char)cpVal);
byte[] bytes = tempString.getBytes(Charset.forName(encoding));
result = new String(bytes);

这在我的本地工作正常,默认字符集是 UTF-8,但在一个 linux VM 上不起作用,默认字符集是 ISO-8859-1。

使用 Unicode 转义序列。

System.out.println("\u2E93");

如果您收到字符串形式的代码点,如问题中所示,请这样做:

Java 11+

String cp = "U+2E93";
int codePoint = Integer.parseInt(cp.substring(2), 16);
String result = Character.toString(codePoint);
System.out.println(result);

Java 5+

String cp = "U+2E93";
int codePoint = Integer.parseInt(cp.substring(2), 16);
String result = new String(new int[] { codePoint }, 0, 1);
System.out.println(result);

输出(以上所有 3 个)


对于来自补充平面的字符,当使用字符串文字时,您需要提供 UTF-16 代理项对

System.out.println("\uD83D\uDC4D");
String cp = "U+1F44D";
...

输出(来自两者)