说明
由于浏览器的多种多样,此方式针对 某些浏览器好用,对其他浏览器需要做额外处理。
所以,下载文件 不要使用中文名称,很多下载网站,下载的文件都只支持英文
解决
由于HTTP头部的默认编码为 ISO-8859-1,下载文件过程中,提取到的文件名都要通过HTTP头部,所以在下载时将文件名称转码为 ISO-8859-1
下面2种方式都行
方式1
//下载文件能够正常显示中文
String attName= URLEncoder.encode(name,"UTF-8");
//浏览器能够打开该文件,也不会打开,而是提示下载
response.setHeader("content-disposition", "attachment;filename=" + attName);
方式2
String nameDownload=new String(name.getBytes("utf-8"),"ISO-8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+nameDownload);