解决各大浏览器下载文件,文件名中文乱码的问题
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; }
解决各大浏览器下载文件,文件名中文乱码的问题相关推荐
- Firefox 火狐 浏览器下载文件文件名中文乱码解决
chrome IE 浏览器下载正常,火狐下载时文件名中有中文就会乱码 原来 Firefox浏览器自己会对URL进行一次转码. 解决办法:正对不同浏览器区别对待处理 public static Stri ...
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
最近做项目,采用Spring MVC做控制层,下载文件的文件名总是在主流浏览器上显示乱码,Firfox不是乱码了,IE下又成了乱码.也是烦,IE总是独树一帜,没办法,只能让程序去适应,在网上也搜索了很 ...
- 解决各大浏览器下载文件,文件名乱码的问题
最近做项目,采用Spring MVC做控制层,下载文件的文件名总是在主流浏览器上显示乱码,Firfox不是乱码了,IE下又成了乱码.也是烦,IE总是独树一帜,没办法,只能让程序去适应,在网上也搜索了很 ...
- 解决浏览器下载文件时中文文件名乱码的问题
解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回. 一.文件下载contro ...
- 解决Edge浏览器下载文件文件名乱码问题
文件名中含有中文的文件下载,用谷歌.火狐.搜狗等浏览器都可以正常下载,但使用Windows自带的edge浏览器下载时文件名出现乱码问题.如下: 解决方案: 在输出头中的文件名进行urlencode编码 ...
- 解决:Safari浏览器下载文件,后缀多拼接了.html
你是否遇到同样的问题? 最后效果: 问题: 其他浏览器下载文件正常 Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为vcard.vcf,手动去掉多余的 ...
- php浏览器下载文件 文件名 空格 中文 处理
php做下载文件的实现代码及文件名中乱码... 最近有人问我做下载文件的方法,对于php方法如下: <?php header("Content-Type: application/fo ...
- 解决各个浏览器文件下载出现文件名中文乱码问题
/*** 解决各个浏览器文件下载中文乱码问题* @param filename* @return*/public static String getFileName(HttpServletReques ...
- 在IE下-下载文件-文件名中文名乱码问题
首先说明下各浏览器对文件下载的文件名解析编码如下: 1. IE浏览器,采用URLEncoder编码 2. Opera浏览器,采用filename*方式 3. Safari浏览器,采用ISO编码的 ...
最新文章
- HDU-3573 Buy Sticks
- Label Assign综述:提升目标检测上限
- Linux下动态库使用小结
- 极道创始人吴江:企业级数据系统,初创一样可以做出好产品
- 将安卓手机打造成你的python全栈开发利器
- leetcode - 1039. 多边形三角剖分的最低得分
- drop table 、delete table和truncate table的区别
- python异步网络通信框架_超级快的 Python 异步网络框架
- sql生成(查询数据的存储过程)代码的存储过程
- python基本数据类型 整数、小数、字符串、布尔、空值、列表、元组、字典、集合、bytes
- OrCAD(一)简介、安装与基本使用
- 第一章 语料库语言学基本知识
- Hutool介绍(详)
- python取系统日期前一天_python 获取前一天或前N天的日期
- stm32 iap升级
- 手动释放ubuntu内存
- 2021年2月世界编程语言排行榜
- java setbounds无效_为什么即使将setLayout()设置为null后,setBounds()方法也不起作用? - java...
- linux nvme固态硬盘,Linux PCIe SSD NVME 性能调优篇
- uniapp ios打包详细步骤