2016-02-27 41 views
1

我其實有一個非常簡單的代碼。我只是試圖打印出所有的UTF-16標誌。它特別有效,但該程序打印的大部分符號都不可讀。打印所有UTF-16字母到控制檯(Java)

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

你解決了嗎?請發佈。謝謝 – chickensoup

回答

0

你可能想要一個short而非int。我想說你想分配2個字節而不是4個,並使用putShort()

也就是說,UTF-16實際上是可變長度的,所以它不會像打印每個代碼點那麼簡單。檢查文章的細節。這也取決於你使用的字體是否有正確的字形。

1

並非所有的16位整數都是有效的Unicode碼點。另外,對於有效的代碼點,您的顯示設備必須具有全套字體,這種情況很少見。