0

我得到以下代码的非法 unicode 转义。

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

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

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

4

3 回答 3

4

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

for(int i=0x3400;i<0x4000;i++)
    System.out.println((char)i);
于 2015-11-12T07:31:27.067 回答
2

你正在寻找的是这样的:

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

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

于 2015-11-12T07:35:04.903 回答
1

您可以使用格式功能:-

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

或者根据这个答案使用这个: -

for(int i=3400;i<4000;i++){
   System.out.println( "\\u" + Integer.toHexString(i| 0x10000).substring(1));
}
于 2015-11-12T07:29:48.733 回答