我正在使用 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/