这是我的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也会修复它?
答案 0 :(得分:2)
这很可能是问题所在:
CSVReader reader = new CSVReader(new FileReader(filepath));
FileReader
始终使用平台默认编码。我更喜欢使用围绕InputStreamReader
的{{1}},因为您可以指定编码:
FileInputStream
答案 1 :(得分:2)
您可以像这里一样明确设置编码
new CSVReader(new InputStreamReader(new FileInputStream(filePath), encoding));