5

我正在使用 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();
    }
}
}

亲切的问候,亚历克斯

4

1 回答 1

5

听起来您的文件实际上并未使用 UTF-8 编码。

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

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

于 2013-10-31T12:28:28.123 回答