通过 UTF-8 中的 Apache CSV 生成 CSV
Generate CSV via Apache CSV in UTF-8
如何通过 Apache CSV 写入 UTF-8 格式的 CSV 文件?
我正在尝试通过以下代码生成 csv,其中 Files.newBufferedWriter() 默认将文本编码为 UTF-8,但是当我在 excel 中打开生成的文本时,会出现无意义的字符。
我这样创建 CSVPrinter:
CSVPrinter csvPrinter = new CSVPrinter(Files.newBufferedWriter(Paths.get(filePath)), CSVFormat.EXCEL);
接下来我设置headers
csvPrinter.printRecord(headers);
接下来在循环中我将值打印到编写器中,这样
csvPrinter.printRecord("value1", "valu2", ...);
我还尝试将文件上传到在线 CSV lint 验证器,它告诉我我使用的是 ASCII-8BIT 而不是 UTF-8。我做错了什么?
Microsoft 软件倾向于采用 windows-12* 或 UTF-16LE 字符集,除非内容以 byte order mark 开头,软件将使用它来识别字符集。尝试在文件开头添加字节顺序标记:
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(filePath))) {
writer.write('\ufeff');
CSVPrinter csvPrinter = new CSVPrinter(writer);
//...
}
如何通过 Apache CSV 写入 UTF-8 格式的 CSV 文件?
我正在尝试通过以下代码生成 csv,其中 Files.newBufferedWriter() 默认将文本编码为 UTF-8,但是当我在 excel 中打开生成的文本时,会出现无意义的字符。
我这样创建 CSVPrinter:
CSVPrinter csvPrinter = new CSVPrinter(Files.newBufferedWriter(Paths.get(filePath)), CSVFormat.EXCEL);
接下来我设置headers
csvPrinter.printRecord(headers);
接下来在循环中我将值打印到编写器中,这样
csvPrinter.printRecord("value1", "valu2", ...);
我还尝试将文件上传到在线 CSV lint 验证器,它告诉我我使用的是 ASCII-8BIT 而不是 UTF-8。我做错了什么?
Microsoft 软件倾向于采用 windows-12* 或 UTF-16LE 字符集,除非内容以 byte order mark 开头,软件将使用它来识别字符集。尝试在文件开头添加字节顺序标记:
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(filePath))) {
writer.write('\ufeff');
CSVPrinter csvPrinter = new CSVPrinter(writer);
//...
}