jsp、servlet下载文件,解决中文乱码

说明

由于浏览器的多种多样,此方式针对 某些浏览器好用,对其他浏览器需要做额外处理。

所以,下载文件 不要使用中文名称,很多下载网站,下载的文件都只支持英文

解决

由于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);

原文出处:/show_1EF3fPeTrB1.html