JAVA文件下载时乱码有两种情况:
1、下载时中文文件名乱码
例如:成绩.zip
变为 __.zip
String fileName = URLEncoder.encode("成绩.zip", "UTF-8");
String userAgent = request.getHeader("User-Agent");
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
response.setContentType("application/zip;charset=utf-8");
response.setCharacterEncoding("utf-8");
answerAttachService.downloadAllFile(map, response.getOutputStream());
response.flushBuffer();
如果还是乱码,参考下面的代码
// 针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8");
} else {
// 非IE浏览器的处理:
formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1");
}
2、url包含中文乱码,提示找不到文件
修改tomcat下的conf/server.xml文件,添加一个属性:URIEncoding,将该属性值设置为UTF-8
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />