2016-08-13 30 views
1

我構建了一個Java GUI應用程序,並且我有一些帶有Unicode文本的jLabel。當我從NetBeans IDE運行應用程序時,文本顯示爲正確的格式,但是當我從.jar文件運行時,文本顯示爲變形窗體。當我在jar文件上運行時,Unicode沒有顯示在我的應用程序中

我的代碼:

try { 
    jLabel1.setText(new String("ژمارا ناسنامی".getBytes(), "UTF-8")); 
} catch (UnsupportedEncodingException ex) { 
    Logger.getLogger(dataEntry.class.getName()).log(Level.SEVERE, null, ex); 
} 

輸出:

enter image description here

回答

0

試試這個只有:這裏

jLabel1.setText("ژمارا ناسنامی"); 

事實上你的錯誤是第一個電子N-代碼你StringgetBytes()它使用默認編碼,然後你把它解碼爲UTF-8,你依靠的默認編碼是不能UTF-8和無用的String已經UTF-16編碼,因此它已經涵蓋了阿拉伯語字符,這是不正確。

這裏是方法String#getBytes()作爲提醒的Javadoc:

將此String解碼使用平臺的 默認字符集字節序列,並將結果存儲到一個新的字節數組。當該字符串不能在 缺省字符集中編碼時,此方法的 行爲未指定。當需要對編碼過程進行更多的控制時,CharsetEncoder類應該是 。

如果要正確編碼String,則需要使用String#getBytes(Charset)String#getBytes(String)代替。但再一次,在這種特殊情況下甚至不需要。

+0

謝謝你的作品。 –

+0

沒問題,不客氣 –

相關問題