解决unix(ubuntu)平台下,导出csv文件的乱码问题
2014-05-28 15:06
567 查看
项目中用到了csv导出的功能,(项目从页面到ide环境和数据库环境都是用的utf-8的编码集)但是在本地(win7)环境下开发时,无论字符编码设置成什么,用excel打开都没有乱码。但部署到ubuntu后发现,导出的csv文件用ultra-edit打开没有问题,但用excel打开就会乱码。解决办法如下:
1.导出的csv文件要加上BOM
2.文件的输出流也要加上字符集
这样就能够解决乱码问题。
完整代码如下:
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;charset=gbk");
response.setHeader("Content-Disposition", "attachment; filename=test.csv");
OutputStream resOs = null;
try {
resOs = response.getOutputStream(); OutputStream buffOs = new BufferedOutputStream(resOs); OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs, "gbk");
CsvWriter writer = new CsvWriter(outputwriter, ','); writer.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
// write data
//
writer.flush();
writer.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
} finally {
try {
if (resOs != null) {
resOs.flush();
resOs.close();
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
相关文章推荐
- Asp.net 解决导出CSV文件乱码的问题
- 解决PLSQL Developer导出CSV文件数据显示乱码和科学计数法问题
- 导出CSV文件时中文乱码问题的解决
- php导出CSV文件和解决乱码问题
- java web导出csv文件中文乱码问题解决
- MySQL直接导出CSV文件,并解决中文乱码的问题
- 文件、导出-在Mac系统下Excel转csv文件中文乱码问题解决-by小雨
- 解决php导出csv文件打开乱码的问题
- 解决雷鸟导入OE导出的.csv文件乱码的问题
- java web导出csv文件中文乱码问题解决。
- sl3中的DataGrid中的数据导出到Excel中 使用csv格式 解决中文是乱码的问题
- Ubuntu下亲测解决zip 文件中中文文件名乱码的问题
- 解决ubuntu下打开pdf文件乱码问题
- 解决ubuntu文件乱码问题
- 解决 JasperReport 导出 Csv 乱码的问题
- php读取淘宝数据包csv文件 unicode ucs-2 utf-16 中文乱码问题解决
- 解决ubuntu文件乱码问题
- 解决txt文件在ubuntu下乱码问题
- asp.net 导出到CSV文件乱码的问题
- UNIX系统平台下文件上传慢问题解决