在JAVA WEB APP里下载文件,当包含中文名称时,会在不一样浏览器, 不一样操做系统里,产生乱码的问题;java
试过下面的方法,没有效果。浏览器
String name = fileName + ".xlsx"; if (httpServletRequest.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { name = URLEncoder.encode(name, "GBK"); } else { name = new String(name.getBytes("GBK"), "ISO8859-1"); } httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + name);
最后在StackOverflow上面找到了一个有效的方法;测试过在MAC,Windows, IE, Chrome, FF里均可以;测试
final String encodedFileName = encodeFilename(fileNameToEncode); response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); private String encodeFilename(final String filename) { try{ URI uri = new URI(null, null, filename, null); String encodedName = uri.toASCIIString(); return encodedName; } catch(URISyntaxException ex){ return filename; } }
from: http://stackoverflow.com/questions/22319277/how-to-set-chinese-filename-correctly-for-different-browsers-when-download-file操作系统