如何将JTable数据读入具有特殊字符(如中文)的ArrayList?

时间:2017-10-13 06:02:16

标签: java swing utf-8 jtable

我有一个带有中文字符的Jtable,而我正在尝试将数据提取到数组列表中,它显示为???????,在eclipse控制台中显示它是好的,但在html文件中显示它是制作棘手。

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();
        }   
    }
}

1 个答案:

答案 0 :(得分:0)

假设您的源代码以UTF-8编码保存,您在编写html时也需要指定此编码。目前,你只是在html文件中写了一堆字符,没有任何正确的html标签。

我已经改编了你的&#34;写给html&#34;部分代码如下:

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();
}

它首先使用meta - 标记写一个正确的html标头,指定内容是UTF-8。然后,它将每个字符串写为正确的段落(<p>...</p>),最后再次正确关闭html。