在下载文件时,经常遇到文件名乱码等问题。
本文说明如何编码文件名,以及如何设置HttpServletResponse对象。
1,如何编码文件名
String userAgent = request.getHeader("User-Agent"); if (/* IE 8 至 IE 10 */ userAgent.toUpperCase().contains("MSIE") || /* IE 11 */ userAgent.contains("Trident/7.0")) { fileName = URLEncoder.encode(fileName, "UTF-8"); } else if (userAgent.toUpperCase().contains("MOZILLA") ||
userAgent.toUpperCase().contains("CHROME")) { fileName = new String(fileName.getBytes(), "ISO-8859-1"); } else { fileName = URLEncoder.encode(fileName, "UTF-8"); }
2,如何设置HttpServletResponse对象 以下代码以Excel文件下载为例。
response.setCharacterEncoding("UTF-8"); response.setContentType("application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment; filename=" + fileName);