2014-03-24 54 views
1

我加載文件,JTable的編碼在Java中

得到一條直線從它

,並把它放在一個JTable

JTable中顯示了一些我charcters爲方框的。

答案,我在網上找到:

1.

  • 它是如何的文件被打開,所以我改變
  • BufferedReader bf = new BufferedReader(new FileReader(filename));
  • BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF8"));
  • 我也嘗試字符串而不是字符串

2.

  • 它的字體,所以我嘗試
  • jTable1.setFont(new Font("Times New Roman", Font.BOLD, 12));
  • 我試過其他字體,如Arial,大衛,...

你能想想其他的原因?

通過nachokk的要求,這裏是我的代碼:

 int linecount = 0; 
     String line = null; 
     BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF8")); 
     DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 

     while ((line = bf.readLine()) != null) { 
      linecount++; 
      model.addRow(new Object[]{filename, linecount, line}); 
     } 
+3

你能發表一個重現你所面臨問題的例子嗎? – nachokk

+0

更新後的帖子與代碼 –

+0

什麼是你看不到的字符的Unicode代碼點?使用[String.codePointAt](http://docs.oracle。com/javase/7/docs/api/java/lang/String.html#codePointAt(int))來查明。 –

回答

0

你在屏幕上框,當您使用不包含必要glyphs(即它不知道如何渲染字體某些Unicode字符代碼)。

如果Java無法讀取文件(即編碼問題),您應該看到?

如果您需要快速測試,請打開一個文本編輯器,該文本編輯器允許您選擇喜歡並輸入一些Unicode值(或者,如果您有文件,只是嘗試打開它)。your OS's Unicode input method

請注意,某些字處理程序會在缺失字形時注意到它們會自動回退到包含字形的字體。

[編輯]

它給了我一個替換字符65533在每個位置

這意味着你使用了錯誤的編碼讀取文件。找出正確的編碼是什麼(問問創建它的人),並用它代替UTF-8

+0

我嘗試了不同的字體,但沒有成功,還注意到阿龍給我寫了一個合法的評論,這讓我意識到,這可能還是文件加載的方式,因爲所有這些字符是「替換字符」的情況下獲取到JTable –

+0

甚至在這種情況下,使用正確的編碼。查看我的編輯。 –

+0

我創建了該文件。我只是用UTF-8再次保存了文件,但它仍然不起作用。爲實現這個http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of-a-stream的思維,但它似乎毫無意義 –