如何在supercsv getHeader中使用编码

时间:2013-10-29 09:35:28

标签: java supercsv

我正在使用supercsv 2.1.0来解析其中包含德语单词的CSV文件。

给定的CSV文件在第一行有一个标题。 在这个标题中有一些变异的元音,如:Ä,ä,Ü,ö等。 例如: Betrag;Währung;信息

在我的编码中,我试图像这样得到csv的标题:

ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(new FileInputStream(file), "UTF8"), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);

final String[] header = inFile.getHeader(true);

这是我的标题数组的问题。 使用utf8字符集无法正确编码带有变异元音的所有标题。

有没有办法正确读取标题?

这是一个伪单元测试:

public class TestSuperCSV {


@Test
public void test() {
    String path = "C:\\Umsatz.csv";
    File file = new File(path);

    try {
        ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(
                new FileInputStream(file), "UTF-8"),
                CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
        final String[] header = inFile.getHeader(true);
        System.out.println(header[9]); //getting "W?hrung" but needed "Währung" here


    } catch (UnsupportedEncodingException | FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

亲切的问候, 亚历

1 个答案:

答案 0 :(得分:4)

听起来你的文件实际上并没有使用UTF-8编码。

我可以通过使用ISO-8859-1编码创建CSV文件并运行代码来复制您的方案,它显示为W?hrung

如果我然后更新InputStreamReader以使用"ISO-8859-1"作为编码,则它会正确显示为Währung