Java OpenCSV解析不显示特殊字符

Java OpenCSV解析不显示特殊字符,java,swing,jtable,opencsv,Java,Swing,Jtable,Opencsv,我正在尝试在jTable中加载.csv文件。在记事本中,文件显示OK,但在jTable中,一些字符(如“;”,“$”变为一个方框) private void parseUsingOpenCSV(String filename){ DefaultTableModel model = (DefaultTableModel) empTbl.getModel(); int rows = model.getRowCount(); if (rows>0){ for(int i=0 ; i<ro

我正在尝试在jTable中加载.csv文件。在记事本中,文件显示OK,但在jTable中,一些字符(如“;”,“$”变为一个方框)

private void parseUsingOpenCSV(String filename){

DefaultTableModel model = (DefaultTableModel) empTbl.getModel();
int rows = model.getRowCount();
if (rows>0){
for(int i=0 ; i<rows; i++)
{model.removeRow(0);}
}   

    try {
        CSVReader reader = new CSVReader(new FileReader(filename));
        String [] nextLine;
        int rowNumber = 0;

        while ((nextLine = reader.readNext()) != null) {
            rowNumber++;
                model.addRow(new Object[]{nextLine[0], nextLine[1], nextLine[2], nextLine[3], nextLine[4], nextLine[5], nextLine[6], nextLine[7]});
        }
    } catch (IOException e) {
    System.out.println(e);
    }
}
private void parseusingopensv(字符串文件名){
DefaultTableModel=(DefaultTableModel)empTbl.getModel();
int rows=model.getRowCount();
如果(行数>0){

对于(int i=0;i将文件的编码与
InputStreamReader
使用的编码匹配,例如,如果文件为ISO-8859-1,则可以使用

CSVReader reader = new CSVReader(
        new InputStreamReader(new FileInputStream(filename), "ISO-8859-1")); 

UTF-8需要2个字节来显示字符,而ISO-8859-1只需要1个字节。如果使用UTF-8读取ISO-8859-1编码的文件,则使用后者显示的字符(如
将无法正确显示


读取:

您需要指定要读取的文件的编码


尝试使用
新的InputStreamReader(新文件InputStream(…),)
,或者类似的方法,而不是
新的文件读取器(文件名)

您的文件可能有不同的编码,请尝试使用ISO-8859-1。请参阅更新SO-8859-1。UTF-8不起作用。但原因仍然未知。无论如何,感谢Reimeus。永远不要使用该类“文件阅读器”