Java unicode问题

时间:2009-10-14 03:56:08

标签: java unicode

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

String str = "4e59";
System.out.println("\\u"+str);

还有其他一些变种,我缺少什么?

3 个答案:

答案 0 :(得分:9)

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

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

System.out.println((char)Integer.parseInt("4e59", 16));

答案 1 :(得分:5)

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

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

int i;

\u0069\u006E\u0074 \u0069\u003B

答案 2 :(得分:4)

您需要将其转换为char

System.out.println((char) Integer.parseInt("4e59", 16));