2010-12-22 36 views
3

如何將UTF-8字符串添加到JTable中? ASCII範圍中的字符串看起來沒問題,但帶有重音符的字符不能正確顯示。JTable中的UTF-8

+0

UTF-8字符串在應用程序的其餘部分中是否正確顯示? – 2010-12-22 21:49:14

回答

1

我在讀取字符串時沒有將讀寫器設置爲UTF-8編碼。 改變

BufferedReader br = new BufferedReader(new InputStreamReader(di)); 

BufferedReader br = new BufferedReader(new InputStreamReader(di, "UTF-8")); 

後的文本顯示正確。

1

alt text

以上是在JTable中的行(屏幕截圖)與正常重音字符故意插入它。 JTable是通常的,沒有任何特殊的修改來容納或接受特殊字符。

強調字符中定義:http://tlt.its.psu.edu/suggestions/international/accents/codealt.html

的源代碼:

JTable table = new javax.swing.JTable(); 
DefaultTableModel model = null; 

public void initTableModel() { 
    model = new DefaultTableModel(); 
    table.setModel(model); 
    model.addColumn("col1"); 
    model.addColumn("col2"); 
    ListSelectionModel selectionModel = table.getSelectionModel(); 
    selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    ListSelectionModel rowSM = table.getSelectionModel(); 
    table.removeAll(); 
    table.getColumnModel().getColumn((model.getColumnCount() - 1)).setPreferredWidth(200); 
} 

public void initTableData() { 
    int numrows = model.getRowCount(); 
    for (int i = numrows - 1; i >= 0; i--) { 
     model.removeRow(i); 
    } 

    String[] row = new String[3]; 
    if (pass != null) { 
      row[0] = "Lü Dongbin呂洞賓Lán Cǎihé"; 
      row[1] = "《全唐詩》ó, ò, ñ"; 
      model.addRow(row); 
    } 
    validate(); 
    repaint(); 
} 

整個Java源代碼:http://ahb.me/1exq(更準確和測試)

這是代碼你想要的?