Java unicode问题

Bra*_*don 3 java unicode

这可能是一个愚蠢的问题,但...说我有一个String4e59它代表一个特殊的Unicode字符.如何将其添加\u到该字符的开头以便正确显示?我尝试过最简单的解决方案:

String str = "4e59";
System.out.println("\\u"+str);
Run Code Online (Sandbox Code Playgroud)

还有其他一些变种,我错过了什么?

Chi*_*Chi 9

\ u在编译时解析,而不是运行时,因此只需在字符串前加上"\ u"就不会起作用.

您可以使用Integer.parseInt在运行时执行此解析:

System.out.println((char)Integer.parseInt("4e59", 16));
Run Code Online (Sandbox Code Playgroud)

  • 如果brandon感兴趣,这也有效:char c = 0x4E59; (2认同)

Lac*_*lan 5

其他人已经回答了如何做到这一点,但如果你感兴趣我可以解释为什么前置"\u"不起作用:"\uXXXX"序列在编译时由javac转换为相应的unicode字符(由lexer,这是第一步在编译中,事实上).在你的代码中,词法分析器会看到一个包含just的字符串"\u",因此不会触及它.

\uXXXX编码将在任何地方工作,而不仅仅是内部的字符串.如果将它们放在Java源文件中,这两行都是相同的:

int i;

\u0069\u006E\u0074 \u0069\u003B
Run Code Online (Sandbox Code Playgroud)