response文件下载乱码解决
记录一下在开发过程中下载遇到的文件名中文乱码问题!!!
有一个下载功能,在本地的时候下载下来的文件名是没有问题的,但是一部署到阿里云服务器上就就会出现文件名中文乱码的情况。
原代码
response.setContentType("application/x-download"); try { response.setHeader("Content-disposition","attachment;filename="+new String((fileName + ".docx").getBytes("UTF-8"),"iso-8859-1")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
修改后
response.setContentType("application/octet-stream"); String realeFileName = fileName+".docx"; // 对真实文件名进行百分号编码 String percentEncodedFileName = null; try { percentEncodedFileName = URLEncoder.encode(realeFileName, "utf-8") .replaceAll("\+", "%20"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 组装contentDisposition的值 StringBuilder contentDispositionValue = new StringBuilder(); contentDispositionValue.append("attachment; filename=") .append(percentEncodedFileName); response.setHeader("Content-disposition",contentDispositionValue.toString());
修改后部署到服务器上就可以正常下载,不会出现乱码情况了。