[英]Java reading cyrrilic CSV file, writing strange characters
这是我的Java代码
(整个项目使用UTF-8编码)
public static ArrayList<ArrayList<String>> getCSVContent(String filepath) throws Exception {
CSVReader reader = new CSVReader(new FileReader(filepath));
ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < nextLine.length; i++) {
list.add(nextLine[i]);
}
array.add(list);
}
reader.close();
return array;
}
这是我的CSV文件:
Place1 ул. "Цанко Церковски" No37 Category1 bar Bulgaria Sofia 310-808-5243
Place 2 ул."Ген. Гурко" No 6 Category2 bar Bulgaria Sofia 415-846-1688
Place 3 ул. "Гео Милев" No 18 Category3 bar Bulgaria Sofia 720-318-9049
这是输出
而不是ул。 例如,“ЦанкоЦерковски” No37
我得到: , 。
它可能与CSV文件的编码有关,但是我不确定如何查看/更改它以及应该使用Word还是Open Office?
另外,是否可以更改Java读取此类文件的方式,以便即使它们使用了错误的编码,Java也可以对其进行修复?
这很可能是问题所在:
CSVReader reader = new CSVReader(new FileReader(filepath));
FileReader
始终使用平台默认编码。 我更喜欢使用InputStreamReader
周围包裹FileInputStream
,因为那么你可以指定编码方式:
try (InputStream stream = new FileInputStream(filepath)) {
CSVReader reader = new CSVReader(new InputStreamReader(stream, "UTF-8"));
...
}
您可以像这里一样显式设置编码
new CSVReader(new InputStreamReader(new FileInputStream(filePath), encoding));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.