打印所有UTF-16字母到控制台(Java)

时间:2016-02-27 15:12:18

标签: java utf-16

我实际上有一个非常简单的代码。我只是尝试打印出所有UTF-16标志。它特别有效,但这个程序打印的大多数标志都不可读。

  public static void main(String[] args) {
    for (int i = 0; i < 65535; i++) {
        try {
            System.out.println(new String(ByteBuffer.allocate(4).putInt(i).array(), "UTF-16"));
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(Charset.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

为什么会这样,我该如何解决?

谢谢

2 个答案:

答案 0 :(得分:1)

并非所有16位整数都是有效的Unicode代码点。此外,对于有效的代码点,您的显示设备必须具有完整的字体集,这种情况很少见。

答案 1 :(得分:0)

您可能想要short而不是int。我想你要分配2个字节而不是4个,并使用putShort()

尽管如此,UTF-16实际上是可变长度的,所以它不会像打印每个代码点那么简单。查看文章了解详细信息。它还取决于您使用的字体是否具有正确的字形。