使用十六进制代码循环打印Unicode字符

时间:2015-11-12 07:19:09

标签: java string unicode hex unicode-escapes

我正在为以下代码获取非法的unicode转义。

 for(int i=3400;i<4000;i++)
   System.out.println("\u" + i );

如果我在输出\u3400之前添加斜杠而不是实际的unicode字符。

我想在循环中打印unicode字符。 unicode字符也是十六进制代码。如何循环十六进制代码并打印所有unicode字符。

3 个答案:

答案 0 :(得分:3)

您无法在运行时将"\u"与某些内容连接起来,因为在编译期间会解析"\uXXXX"个序列。但是,不需要这样做。您可以简单地将整数转换为字符,并使用0x前缀指定十六进制数字:

for(int i=0x3400;i<0x4000;i++)
    System.out.println((char)i);

答案 1 :(得分:1)

您可以使用format功能: -

for(int i=3400;i<4000;i++){
   System.out.format("\\u%04x", i);
}

或根据this回答使用此: -

for(int i=3400;i<4000;i++){
   System.out.println( "\\u" + Integer.toHexString(i| 0x10000).substring(1));
}

答案 2 :(得分:1)

您正在寻找的是:

    for (int i = 0x3400; i < 0x4000; i++) {
        System.out.println((char) i);
    }

你不应该忘记,\u前缀之后的任何数字都是十六进制数(基数16)。从这个事实可以看出,在你的循环中,你会在十六进制间隔3400...4000中丢失很多unicode字符。因此,您应该将循环范围更改为0x34000x4000