java下载csv乱码问题
2022/9/3 14:25:38
本文主要是介绍java下载csv乱码问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一.问题。
用EXCEL打开文件时,总是产生乱码,但是用NOTEPAD++打开时,显示正常。然后,在NOTEPADD++的“格式”工具栏中查了一下文件编码,发现是“以UTF-8格式编码”。
二.解决方法。
以CSV方式导出的文件中默认不含BOM信息,通过给将要输出的内容设置BOM标识(以 EF BB BF 开头的字节流)即可解决该问题。追加BOM标识 outputStream.write(0xef); outputStream.write(0xbb); outputStream.write(0xbf);
三.完整代码。
@GetMapping(value = "/downloadFile",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public Object download(String id,HttpServletResponse response) { try { DataCleanManagement dataCleanManagement = dataCleanManagementService.getById(id); if (dataCleanManagement == null){ return ResultVO.fail("文件不存在"); } String path = config.filePath + File.separator + dataCleanManagement.getFilePath() + File.separator + dataCleanManagement.getResultFile(); File file = new File(path); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header,给文件名进行utf-8编码,不然下载的时候文件名乱码不对 response.addHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode (file.getName(), "UTF-8" )); response.addHeader("Content-Length", "" + file.length()); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/vnd.ms-excel;charset=gb2312"); outputStream.write(0xef); outputStream.write(0xbb); outputStream.write(0xbf); outputStream.write(buffer); outputStream.flush(); outputStream.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); log.info(e.getLocalizedMessage(),e); } return null; }
以上代码请供参考,如有不当,请及时指出!
这篇关于java下载csv乱码问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java语音识别项目入门:新手必读指南
- 2024-11-25Java语音识别项目入门:轻松开始你的第一个语音识别项目
- 2024-11-25Java语音识别项目入门详解
- 2024-11-25Java语音识别项目教程:从零开始的详细指南
- 2024-11-25JAVA语音识别项目教程:初学者指南
- 2024-11-25Java语音识别项目教程:初学者指南
- 2024-11-25JAVA云原生入门:新手指南与基础教程
- 2024-11-25Java云原生入门:从零开始的全面指南
- 2024-11-25Java云原生入门:新手必读教程
- 2024-11-25JAVA云原生教程:新手入门及实战指南