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);
}
}