在下載文件時,經常遇到文件名亂碼等問題。
本文說明如何編碼文件名,以及如何設置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);