兼容各浏览器的文件下载时中文名称乱码的解决方案

Posted wtcadmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了兼容各浏览器的文件下载时中文名称乱码的解决方案相关的知识,希望对你有一定的参考价值。

public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// codes..
String name = "中文名 带空格 的测试文件.txt";
String userAgent = request.getHeader("User-Agent");
byte[] bytes = userAgent.contains("MSIE") ? name.getBytes() : name.getBytes("UTF-8"); // name.getBytes("UTF-8")处理safari的乱码问题
name = new String(bytes, "ISO-8859-1"); // 各浏览器基本都支持ISO编码
response.setHeader("Content-disposition", String.format("attachment; filename="%s"", name)); // 文件名外的双引号处理firefox的空格截断问题
// codes..
}
}

这段代码处理了文件下载时不同浏览器解析中文文件名所出现的乱码问题和firefox的空格截断问题,在IE9, chrome, opera, safari, firefox下均测试通过。

来源:https://f0rb.iteye.com/blog/1308579

    但是没有解决我的ie9下载时的乱码问题,做了一步修改:

response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"),"ISO8859-1"));

  修改为gbk后问题解决。

以上是关于兼容各浏览器的文件下载时中文名称乱码的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

通过TomCat获取html文件时中文乱码

QT命令行编译时中文显示乱码怎么解决,满意追加

怎么解决读取txt文件读取时中文乱码问题

用source语句导入sql文件时中文乱码如何解决

python读写csv时中文乱码问题解决办法

ThinkPHP使用纯真IP获取物理地址时中文乱码问题