为了解决浏览器中文件下载时中文名称的乱码问题;可以在前端页面发送请求前先对中文名进行统一编码;然后在后台控制器类中对文件名称进行相应的转码;其具体实现步骤如下。
在下载页面中对中文文件名编码。可以使用Servlet API中提供的URLEncoder类中的encoder(String s, String enc)方法将中文转为UTF-8编码
在控制器类中增加对文件名进行编码的方法;其代码如下所示。
在方法getFilename()中;由于IE浏览器在文件编码上与其他浏览器的方式不同;所以在中文编码设置上IE浏览器设置为UTF-8编码;而火狐等其他浏览器设置为ISO-8859-1编码。另外由于不同版本的IE浏览器;请求代理User-Agent中的关键字也略有不同;所以在判断IE浏览器时;需要特别注意User-Agent中的关键字。
再次测试下载;文件名中文显示正常