Background
之前做的一个数据导出功能,生成的csv文件,编码格式UTF-8,后来客户反应说文件打开中文乱码,一问用的是office excel,实验后最终发现UTF-8-BOM格式就没问题。这里记录下过程,代码中使用了Hutool工具类。
源码
@Test
public void Test1() {
String filePath = "d://test/b.csv";
FileOutputStream fos = null;
CsvWriter writer = null;
try {
File file = new File(filePath);
// 自动创建目录
FileUtil.mkdir(file);
// 先写入 UTF-8-BOM 编码头内容
byte[] uft8bom = {(byte) 0xef, (byte) 0xbb, (byte) 0xbf};
fos = new FileOutputStream(file, true);
fos.write(uft8bom);
// 然后写入文件内容
writer = CsvUtil.getWriter(file, CharsetUtil.CHARSET_UTF_8, true);
List<String> header = ListUtil.toList("数据时间", "温度(℃)", "压力(MPa)", "流量(t/h)");
writer.write(header.toArray(new String[0]));
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流
IoUtil.close(fos);
IoUtil.close(writer);
}
}
最终生成的文件如下所示

本文记录了一次解决客户在使用OfficeExcel打开UTF-8编码的CSV文件时出现中文乱码的问题。通过在文件开头添加UTF-8-BOM头,确保文件在Excel中能正确显示中文。使用Hutool工具类实现了这一功能,代码示例展示了如何生成带有BOM的UTF-8 CSV文件。
702

被折叠的 条评论
为什么被折叠?



