导入的CSV文件开头的符号奇怪

时间:2019-05-09 13:01:36

标签: java csv parsing export-to-csv

我正在将一个CSV文件解析到我的JTable中。问题是每次我的第一张唱片前都会出现一些奇怪的符号。这是我的代码:

JFileChooser chooser=new JFileChooser();
    chooser.showOpenDialog(null);
    File f=chooser.getSelectedFile();
    String filename=f.getAbsolutePath();
    pathF.setText(filename);

    try {
        FileReader fr=new FileReader(f);
        BufferedReader br= new BufferedReader(fr);

        DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
        Object [] lines=br.lines().toArray();
        for(int i=0;i<lines.length;i++){
            String []row=lines[i].toString().split(";");
            model.addRow(row);
        }

所以一切都很好,但是在第一个记录的前面出现了奇怪的符号。这是输出: Screenshot of Application with occuring symbols

如您所见,i10前面有一个空的正方形。可以肯定的是,这是一个字符,但是我如何摆脱它,因为由于有了这个字符,程序假设i10和(square)i10是不同的人。我还用System.out.println(lines[i].toString());检查了一下,结果是: enter image description here

您可以从第一行的开头清楚地看到不需要的符号。我该如何解决?

1 个答案:

答案 0 :(得分:3)

它称为BOM(字节顺序标记)。它标志着流的开始,您可以使用Apache Commons csv库的BOMInputStream将其删除。使用该库可以读取和解析csv,它要简单得多,并提供许多功能。

类似这样的东西:

BOMInputStream bis = new BOMInputStream(file.getInputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(bis,StandardCharsets.UTF_8));

使用Apache Commons的示例:https://www.callicoder.com/java-read-write-csv-file-apache-commons-csv/

关于Bom的信息:How to exclude BOM with BOM InputStream