记录一下在开发过程中下载遇到的文件名中文乱码问题!!!
有一个下载功能,在本地的时候下载下来的文件名是没有问题的,但是一部署到阿里云服务器上就就会出现文件名中文乱码的情况。
原代码
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());
修改后部署到服务器上就可以正常下载,不会出现乱码情况了。