【发布时间】:2019-11-28 10:28:13
【问题描述】:
如何通过 Apache CSV 以 UTF-8 格式编写 CSV 文件?
我正在尝试通过以下代码生成 csv,其中 Files.newBufferedWriter() 默认将文本编码为 UTF-8,但是当我在 excel 中打开生成的文本时,会出现无意义的字符。
我这样创建 CSVPrinter:
CSVPrinter csvPrinter = new CSVPrinter(Files.newBufferedWriter(Paths.get(filePath)), CSVFormat.EXCEL);
接下来我设置标题
csvPrinter.printRecord(headers);
在循环中的下一个我将值打印到这样的写入器中
csvPrinter.printRecord("value1", "valu2", ...);
我还尝试将文件上传到在线 CSV lint 验证器,它告诉我使用的是 ASCII-8BIT 而不是 UTF-8。我做错了什么?
【问题讨论】:
-
ASCII 字符在 UTF8 中的编码方式与在 ASCII 中的编码方式相同。您的代码仅使用 ASCII 字符,因此在查看文件时无法区分 ASCII 和 UTF8。
-
而不是
CSVFormat.EXCEL尝试使用CSVFormat.RFC4180 -
@Deadpool 没有帮助:/
-
类似
CSVPrinter printer = new CSVPrinter(new PrintWriter("nlp.csv", "UTF-8"), CSVFormat.EXCEL.withDelimiter("|".charAt(0)));@DenisStephanov -
@Deadpool 仍然无法正常工作
标签: java csv apache-commons-csv