2017-10-13 101 views
0

我有一個帶有中文字符的Jtable,而我試圖將數據提取到數組列表中,它顯示爲???????,在eclipse控制檯中顯示它正常,但在html文件中顯示它棘手。如何將JTable數據讀入具有特殊字符(如中文)的ArrayList?

package test.java; 
import javax.swing.*;  
public class TableExample 
{  
    JFrame f; 
    JTable jt ; 
    public JTable m1() 
    {  
     f=new JFrame();  
     String data[][]={ {"100","你叫什麼名字? ","1234"},  
       {"111","プードル","4567"},  
       {"222","유모차","343124"}};  
     String column[]={"ID","NAME","SALARY"};  
     jt=new JTable(data,column);  
     jt.setBounds(30,40,200,300);   
     JScrollPane sp=new JScrollPane(jt);  
     f.add(sp);   
     f.setSize(300,400);  
     f.setVisible(true); 
     return jt; 
    } 
} 

第二程序讀取數據和寫入數據到一個HTML文件中,我看不到我的特殊字符

package test.java; 
import java.util.ArrayList; 
import java.io.FileWriter; 
import java.io.IOException; 

import javax.swing.JTable; 
public class TableClass { 
    public static void main(String[] args) 
    { 
     ArrayList<String> numdata = new ArrayList<String>();  
     TableExample mainTable = new TableExample(); 
     JTable table = mainTable.m1(); 
     for (int count = 0; count < table.getRowCount(); count++) 
     { 
      numdata.add(table.getValueAt(count, 1).toString()); 
     } 

     FileWriter writer = null; 
     try 
     { 
      writer = new FileWriter("D:/Testing.html"); 
     } catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     for(String str: numdata) 
     { 
      try 
      { 
       writer.write(str); 
      } catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
     try { 
      writer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+2

這很可能是用於呈現文本的字體的一個問題 – MadProgrammer

+0

在執行代碼時,我得到一個例外,即「ArrayList numdata」不能轉換爲「CharSequence」。這是你的實際代碼嗎? – cello

+0

將'System.out.println'行更改爲'for(Object o:numdata){System.out.println(「TableClass.main()」+ o); }'爲我打印正確的字符。所以它可能是控制檯中使用的字體或控制檯的字符編碼問題。 – cello

回答

0

假設你的源代碼保存在UTF-8編碼,在編寫html的時候也需要指定這個編碼。目前,您只需將一堆字符寫入html文件,而沒有任何適當的html標籤。

我已經適應你的「寫HTML」如下代碼的一部分:

try { 
    FileWriter writer = new FileWriter("testing.html"); 
    writer.write("<html><head><meta charset=\"UTF-8\"></head><body>"); 
    for(String str: numdata) { 
     writer.write("<p>" + str + "</p>"); 
    } 
    writer.write("</body></html>"); 
    writer.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

它首先寫入一個正確的HTML頭與meta - 標記指定的內容是UTF-8。然後,它將每個字符串寫入適當的段落(<p>...</p>),最後再次正確地關閉html。

+0

我仍然無法在HTML文件中看到特殊字符(中文),而且還有FYI:我僅以UTF-8格式保存了源代碼。 – srinivas

相關問題