我实际上有一个非常简单的代码。我只是尝试打印出所有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);
}
}
}
为什么会这样,我该如何解决?
谢谢
答案 0 :(得分:1)
并非所有16位整数都是有效的Unicode代码点。此外,对于有效的代码点,您的显示设备必须具有完整的字体集,这种情况很少见。
答案 1 :(得分:0)
您可能想要short
而不是int
。我想你要分配2个字节而不是4个,并使用putShort()
。
尽管如此,UTF-16实际上是可变长度的,所以它不会像打印每个代码点那么简单。查看文章了解详细信息。它还取决于您使用的字体是否具有正确的字形。