这可能是个愚蠢的问题,但是......说我有String
之类的4e59
代表一个特殊的unicode角色。如何将\u
添加到该字符的开头以便正确显示?我尝试过最简单的解决方案:
String str = "4e59";
System.out.println("\\u"+str);
还有其他一些变种,我缺少什么?
答案 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));