https://blog.csdn.net/fengchao2016/article/details/55188805/

使用Trident和Edge关键字来判断是否是微软的浏览器(微软抛弃了IE,开始使用Edge了),在下载时,首先判断是否是微软的浏览器,如果是,用utf-8对文件名进行编码,如果不是,使用万能解决乱码。

public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{  byte[] data = FileUtil.toByteArray2(filePath);HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();//解决下载文件时 中文文件名乱码问题boolean isMSIE = isMSBrowser(request);  if (isMSIE) {  //IE浏览器的乱码问题解决fileName = URLEncoder.encode(fileName, "UTF-8");  } else {  //万能乱码问题解决fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");  } response.reset();  response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");  response.addHeader("Content-Length", "" + data.length);  response.setContentType("application/octet-stream;charset=UTF-8");  OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());  outputStream.write(data);  outputStream.flush();  outputStream.close();response.flushBuffer();} //判断是否是ie浏览器private static String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"};public static boolean isMSBrowser(HttpServletRequest request) {  String userAgent = request.getHeader("User-Agent");  for (String signal : IEBrowserSignals) {  if (userAgent.contains(signal))  return true;  }  return false;  }

解决各大浏览器下载文件,文件名中文乱码的问题相关推荐

  1. Firefox 火狐 浏览器下载文件文件名中文乱码解决

    chrome IE 浏览器下载正常,火狐下载时文件名中有中文就会乱码 原来 Firefox浏览器自己会对URL进行一次转码. 解决办法:正对不同浏览器区别对待处理 public static Stri ...

  2. 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题

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

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

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

  4. 解决浏览器下载文件时中文文件名乱码的问题

    解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回. 一.文件下载contro ...

  5. 解决Edge浏览器下载文件文件名乱码问题

    文件名中含有中文的文件下载,用谷歌.火狐.搜狗等浏览器都可以正常下载,但使用Windows自带的edge浏览器下载时文件名出现乱码问题.如下: 解决方案: 在输出头中的文件名进行urlencode编码 ...

  6. 解决:Safari浏览器下载文件,后缀多拼接了.html

    你是否遇到同样的问题? 最后效果: 问题: 其他浏览器下载文件正常 Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为vcard.vcf,手动去掉多余的 ...

  7. php浏览器下载文件 文件名 空格 中文 处理

    php做下载文件的实现代码及文件名中乱码... 最近有人问我做下载文件的方法,对于php方法如下: <?php header("Content-Type: application/fo ...

  8. 解决各个浏览器文件下载出现文件名中文乱码问题

    /*** 解决各个浏览器文件下载中文乱码问题* @param filename* @return*/public static String getFileName(HttpServletReques ...

  9. 在IE下-下载文件-文件名中文名乱码问题

    首先说明下各浏览器对文件下载的文件名解析编码如下: 1.  IE浏览器,采用URLEncoder编码 2.  Opera浏览器,采用filename*方式 3.  Safari浏览器,采用ISO编码的 ...

最新文章

  1. HDU-3573 Buy Sticks
  2. Label Assign综述:提升目标检测上限
  3. Linux下动态库使用小结
  4. 极道创始人吴江:企业级数据系统,初创一样可以做出好产品
  5. 将安卓手机打造成你的python全栈开发利器
  6. leetcode - 1039. 多边形三角剖分的最低得分
  7. drop table 、delete table和truncate table的区别
  8. python异步网络通信框架_超级快的 Python 异步网络框架
  9. sql生成(查询数据的存储过程)代码的存储过程
  10. python基本数据类型 整数、小数、字符串、布尔、空值、列表、元组、字典、集合、bytes
  11. OrCAD(一)简介、安装与基本使用
  12. 第一章 语料库语言学基本知识
  13. Hutool介绍(详)
  14. python取系统日期前一天_python 获取前一天或前N天的日期
  15. stm32 iap升级
  16. 手动释放ubuntu内存
  17. 2021年2月世界编程语言排行榜
  18. java setbounds无效_为什么即使将setLayout()设置为null后,setBounds()方法也不起作用? - java...
  19. linux nvme固态硬盘,Linux PCIe SSD NVME 性能调优篇
  20. uniapp ios打包详细步骤

热门文章

  1. Preftest测试
  2. 【Gamma】Scrum Meeting 1 与助教谈话
  3. 微信小程序开发报错:page is not constructed because it is not found
  4. Delphi 多线程编程(1)
  5. OSPF prefix-suppression Test
  6. kafka connector 使用总结以及自定义connector开发
  7. bitset和bitget
  8. 给SwipeRefreshLayout添加上拉加载更多功能
  9. Android ExpandableListView 展开列表控件(手机QQ好友列表)
  10. C# 从TTF文件加载自定义字体