public static void setFileDownloadHeader(HttpServletResponse response, String filename) {
String headerValue = "attachment;";
headerValue += " filename=\"" + encodeURIComponent(filename) + "\";";
headerValue += " filename*=utf-8''" + encodeURIComponent(filename);
response.setHeader("Content-Disposition", headerValue);
}
public static String encodeURIComponent(String value) {
try {
return URLEncoder.encode(value, "UTF-8").replaceAll("\\+", "%20");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
下载zip包,下载Excel表等标题中含有中文时经常出现乱码,也就是filename中含有中文时,通过这个方式能够解决。之前看到这个解决方案的时候看到了作者有相应的原因解释,可以百度一下。