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());

修改后部署到服务器上就可以正常下载,不会出现乱码情况了。

经验分享 程序员 微信小程序 职场和发展