java - 如何在supercsv getHeader中使用编码

标签 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);

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

有什么方法可以正确读取 header 吗?

这是一个伪单元测试:

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();
    }
}
}

亲切的问候, 亚历克斯

最佳答案

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

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

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

关于java - 如何在supercsv getHeader中使用编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19654418/

相关文章:

java - 用 supercsv 写 UTF-8 BOM

java - 使用 OpenCSV 将 CSV 解析为多个/嵌套 bean 类型?

java - 使用 SuperCSV CSVBeanReader 时在字符串上使用什么单元处理器

java - Java 中的枚举有什么用?

java - 使用只有 id 的实体保存外键 valorized

java - thymeleaf :class condition

java - 将 Null 添加到 ArrayList 时出现 UnsupportedOperationException

java - super CSV 和分组分隔符

java - 结束时打印第一个数组元素

java - 如何使用占位符在 Bootstrap 模型中显示的文本框中设置值