Java 如何在supercsv getHeader中使用编码

Java 如何在supercsv getHeader中使用编码,java,supercsv,Java,Supercsv,我正在使用supercsv 2.1.0解析一个包含德语单词的CSV文件 给定的CSV文件在第一行有一个标题。 在这个标题中有一些变异的元音,如:Ä、ä、Ü、ö等等。 例如: 贝特拉格;瓦隆;信息 在我的编码中,我试图获得csv的标题,如下所示: ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(new FileInputStream(file), "UTF8"), CsvPreference.EXCEL_NORTH_E

我正在使用supercsv 2.1.0解析一个包含德语单词的CSV文件

给定的CSV文件在第一行有一个标题。 在这个标题中有一些变异的元音,如:Ä、ä、Ü、ö等等。 例如: 贝特拉格;瓦隆;信息

在我的编码中,我试图获得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();
    }
}
}
亲切问候,,
Alex

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

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


如果我随后更新了
InputStreamReader
以使用
“ISO-8859-1”
作为编码,那么它正确地显示为
Währung

您是否尝试过使用
“UTF-8”
而不是
“UTF8”
?否,“UTF-8”并没有解决很多问题。假设文件是UTF-8编码的,这是我的错,但ist是ISO-8859-1。不用担心:)顺便说一句,别忘了关闭读卡器(你可以在使用Java 7时使用try with resources)。这里也一样。。。假设为utf-8,结果证明文件编码为ISO-8859-1