Java Unicode到十六进制字符串

时间:2013-05-18 15:23:54

标签: java unicode printstream

下面的代码为Unicode字符串提供了கா

sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println("\u0B95\u0bbe");

通过输入கா,我可以将十六进制值设为 \ u0B95 \ u0bbe 吗?

PS:这是泰米尔语。

2 个答案:

答案 0 :(得分:5)

根据this,你必须尝试

System.out.println( "\\u" + Integer.toHexString('க' | 0x10000).substring(1) );

但它只适用于最高3.0的Unicode。如果您想获得更多值,只需创建一个循环,例如

String foo = "கா";
for (int i = 0; i < foo.length(); i++)
    System.out.println( "\\u" + Integer.toHexString(foo.charAt(i) | 0x10000).substring(1));

产生

\u0b95
\u0bbe

如果您想将它们放在一行中,请将System.out.println()更改为System.out.print()并最后添加System.out.print("\n")

答案 1 :(得分:5)

您可以使用format功能打印Java UTF-16字符串转义符。

例如,此代码将转义写入STDOUT:

String str = "கா";
for(char ch : str.toCharArray())
   System.out.format("\\u%04x", (int) ch);