项目中用到了csv导出的功能,(项目从页面到ide环境和数据库环境都是用的utf-8的编码集)但是在本地(win7)环境下开发时,无论字符编码设置成什么,用excel打开都没有乱码。但部署到ubuntu后发现,导出的csv文件用ultra-edit打开没有问题,但用excel打开就会乱码。解决办法如下:
1.导出的csv文件要加上BOM
CsvWriter writer = new CsvWriter(outputwriter, ',');
writer.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
2.文件的输出流也要加上字符集
resOs = response.getOutputStream();
OutputStream buffOs = new BufferedOutputStream(resOs);
OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs, "gbk");
这样就能够解决乱码问题。
完整代码如下:
private void writeCsv(HttpServletResponse response, List<Record> recordList) {
response.setContentType("data:text/csv;cha