Java 如何在supercsv getHeader中使用编码
我正在使用supercsv 2.1.0解析一个包含德语单词的CSV文件 给定的CSV文件在第一行有一个标题。 在这个标题中有一些变异的元音,如:Ä、ä、Ü、ö等等。 例如: 贝特拉格;瓦隆;信息 在我的编码中,我试图获得csv的标题,如下所示: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
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