【问题标题】:Print Unicode characters with hex code loop使用十六进制代码循环打印 Unicode 字符
【发布时间】:2016-02-13 11:07:51
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java string unicode hex unicode-escapes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你正在寻找的是这样的:

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

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

    【讨论】:

      【解决方案3】:

      您可以使用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));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        • 2014-12-31
        • 2022-11-19
        • 2014-03-05
        • 2014-12-28
        • 1970-01-01
        • 2016-11-16
        相关资源
        最近更新 更多