在下载文件时,经常遇到文件名乱码等问题。
本文说明如何编码文件名,以及如何设置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);