初始是这样的

String downloadfile = URLEncoder.encode(filepath,"UTF-8");

response.addHeader("Content-Disposition","attachment;filename=" + downloadfile );

乱码就是乱在;filename=" + downloadfile 这里,对文件名的编码设定上。

使用URLEncoder.encode(filepath,"UTF-8")虽然可以解决在提示下载框中正确显示汉字文件名的问题,并且在选择保存,然后打开的情况下,文件名称也可以正确的显示。

但是在提示下载框中,选择直接打开,则文件名称变成了类似“%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E7%9A%84%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6%E5%90%8D”的样子。

为了解决这个问题,百度了好久,是这样的

String downloadfile = new String(filepath.getBytes("gb2312"),"iso8859-1");

response.addHeader("Content-Disposition","attachment;filename=" + downloadfile );

还有这样

String userAgent = request.getHeader("User-Agent");
String formFileName = "员工表.xls";

// 针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
    formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8");
} else {
    // 非IE浏览器的处理:
    formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setHeader("Content-disposition",String.format("attachment; filename=\"%s\"", formFileName));
response.setContentType("multipart/form-data");
response.setCharacterEncoding("UTF-8");

发现都不能解决问题,不懈努力,崩溃边缘,最终解决

String fileName = gTable.entityInfo()+".xls";
String fileNameURL = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename="+fileNameURL+";"+"filename*=utf-8''"+fileNameURL);

Java下载文件,中文文件名乱码问题解决相关推荐

  1. java 下载文件的文件名乱码_JAVA 文件下载时的文件名乱码解决

    JAVA 文件下载时的文件名乱码解决 if(null != agent && -1 != agent.indexOf("MSIE")){ filename = UR ...

  2. Java下载文件时文件名出现乱码(但文件内容正常)

    今天写文件下载时,发现以前忽略的问题,写个小记录 我们一般使用中文操作系统,所以要求的 文件名编码最好是utf-8,国际化一点 但是,似乎实际上不是这样 1. String fileName=new ...

  3. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...

  4. 使用IE浏览器下载文件,文件名乱码问题

    实现文件下载功能时,使用IE下载出现文件名乱码不能通过以下方式判断了 if (req.getHeader("user-agent").toLowerCase().contains( ...

  5. 解决各大浏览器下载文件,文件名乱码的问题

    最近做项目,采用Spring MVC做控制层,下载文件的文件名总是在主流浏览器上显示乱码,Firfox不是乱码了,IE下又成了乱码.也是烦,IE总是独树一帜,没办法,只能让程序去适应,在网上也搜索了很 ...

  6. safari浏览器附件下载文件中文名字乱码(转) || 苹果IOS 微信浏览器预览PDF乱码 解决方案(转)

    苹果浏览器下载pdf文件中文名字乱码就是返回报文头要改一下 如果是一个文件地址或者是一个路径,那么前后端交互方式也要改一下,改为get请求即可,后端返回一个二进制数据或者直接outputStream. ...

  7. 火狐浏览器下载文件时文件名乱码问题的解决

    火狐浏览器在微信网页版或其他网站中下载文件时,存在文件名乱码的问题,搜索了很多解决办法,写的都比较复杂,不适合我这种不懂代码的人.后来发现火狐浏览器附加组件addons上可以搜到解决此问题的组件,就是 ...

  8. java下载文件时文件名中文乱码

    下载文件时中文乱码是一个很常见的问题, 这不是第一次,但我希望它是最后一次了 这是个让人很头疼的问题, 明明在后台文件名还是正常的,为什么下载后文件名就乱码了呢 为什么会乱码:因为浏览器的编码和后台传 ...

  9. Java下载文件时文件名中的中文变成下划线,其他正常

    问题: 问题源码 package com.lm.cms2.controller;import org.springframework.stereotype.Controller; import org ...

  10. Java 使用IE浏览器下载文件,文件名乱码问题

    使用Servlet实现文件下载功能时,使用IE下载出现文件名乱码; 网上常见的解决办法是通过"user-agen"来判断浏览器: if (req.getHeader("u ...

最新文章

  1. C#中Dispose和Close的区别
  2. 某CrackMe算法分析
  3. chrome浏览器最小字号解决方案
  4. 淘宝技术架构从1.0到4.0的演变
  5. ds1302典型应用原理图_不同类型的光纤激光器,在工业中有哪些典型应用
  6. CMS :内容管理系统
  7. 网页采集器,全自动网站采集发布(图文)
  8. 数据库周刊45丨易鲸捷4.2亿订单创记录;10月Oracle补丁发布;巨杉SequoiaDB v5.0发布;MySQL卡死案例……
  9. 使用js实现百度地图与高德地图经纬度的转换
  10. 第六周作业-需求建模
  11. matlab ga函数详解,matlab遗传算法ga函数
  12. 神器推荐:应用之星,零代码就能制作炫酷的H5页面
  13. 机器人学——1.2-三维空间位姿描述
  14. 打开idea后不显示界面
  15. Android 精华 - 收藏全集 -
  16. 看苹果Metal支持c++开发
  17. SSL peer shut down incorrectly报错解决
  18. python爬虫之爬取起点中文原创小说排行榜
  19. 偷懒是程序员的一种至高境界
  20. emoji 表情 php 转换,emoji的表情转换PHP类库

热门文章

  1. 光纤跳线接口_你知道光纤接头、尾纤、终端盒的作用与接法嘛?读懂这篇足够...
  2. Java之函数式接口
  3. python中pip下载过慢问题
  4. 依时利考勤机说明书_指纹考勤机如何安装及使用说明|依时利
  5. 【分享】一个电路仿真软件---proteus ISIS
  6. html5期末大作业:基于html+css+javascript+jquery+bootstarp响应式图书电商HTML模板网上书店(25页)
  7. Git管理工具SourceTree文件预览乱码问题
  8. 【预测模型】基于BP神经网络预测股票matlab代码
  9. 2019年美赛E题翻译与思路详解
  10. 网页在线播放器 ····