最近有一个需求,需要在Android端导出CSV文件,自测是用的WPS,没啥问题。可到了测试那边,用Excel直接打开就是乱码,需要在Excel数据里面用【从文件/CSV】打开。这样就显示非常的不方便。
解决办法:
java
public static void exportToCsv(List<String[]> data, String filePath) throws IOException {
File csvFolder = new File(FileIO.CSV_PATH);
boolean isPresent = csvFolder.exists();
if (!isPresent) {
csvFolder.mkdir();
}
//FileWriter writer = new FileWriter(filePath);
FileOutputStream fos = new FileOutputStream(filePath);
// 写入BOM
fos.write(0xEF); // 239
fos.write(0xBB); // 191
fos.write(0xBF); // 189
OutputStreamWriter writer = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
for (String[] row : data) {
String csvRow = String.join(",", row);
writer.write(csvRow + "\n");
}
writer.flush();
writer.close();
}
解决方案:使用UTF-8 BOM。