Firefox下载文件时中文名乱码问题
为了形象化,先看几张不同浏览器下下载文件时的效果图:
1:Firefox 36.0.1
2:IE8
3:Chrome 40.0.2214.93 m
4:360 7.1.1.322
很明显在Firefox下出现了乱码,出现乱码一般是字符集的问题,这是怎么回事呢?为什么其他的浏览器都没有问题呢?看了一下Firefox的字符集是Unicode,改成简体中文看看,发现文件名是不乱了,不过网页的其他部分全乱了,连百度都乱了!如下图所示:
恩,一时我也不知道是什么原因,看看Firefox下的下载文件的响应信息是什么样的,如下图所示:
以前为了防止出现乱码问题,后台的文件名是经过这个转换的(java.net.URLEncoder.encode(fileName, "UTF-8");),证明传递的过程中没有问题,不过为什么其他浏览器在弹出下载对话框的时候没有问题,而Firefox却出现了乱码呢?可能是在弹出对话框的时候处理的方式不一样吧!我们百度看看!
针对这个问题,遇到的人还是不少的,下面是我觉得非常有借鉴作用的资源:
1:这篇博文解释的相当好,值得一看
http://qixinglu.com/post/redisposition.html
2:这一篇也有一定的借鉴意义
http://my.oschina.net/iceman/blog/67541
3:下面是具体解决方案
http://f0rb.iteye.com/blog/1308579
http://www.cnblogs.com/stangray/archive/2010/06/28/1766884.html
http://blog.csdn.net/shixing_11/article/details/5858902
恩,看到这里我相信,不管明白不明白为什么,只要动手实验实验,就能针对自己的情况,找到这个问题的解决方案了,关键就是如何按照要求写
"Content-Disposition","attachment;filename*=utf-8'zh_cn'文件名.xx"
我的解决方式如下(借鉴上面的解决方式):
//仅提供了部分代码,因为我们已经明确问题的所在,知道修改那一部分了,(代码中downloadFileName 即代表
*=utf-8'zh_cn'文件名.xx
部分)
String agent = (String)getRequest().getHeader("USER-AGENT");
if(agent != null && agent.toLowerCase().indexOf("firefox") > 0)
{
downloadFileName = "=?UTF-8?B?" + (new String(Base64.encodeBase64(fileName.getBytes("UTF-8")))) + "?=";
}
else
{
downloadFileName = java.net.URLEncoder.encode(fileName, "UTF-8");
}
该段代码经我测试,通过了Firefox 36.0.1/IE8/Chrome 40.0.2214.93 m/360 7.1.1.322等浏览器的考验!
Firefox修改后的效果如下所示:
4:如果你感兴趣,英文还不错,可以看看下面的内容
http://greenbytes.de/tech/tc2231/
非常感谢网络上无私的贡献者!
Firefox下载文件时中文名乱码问题的更多相关文章
- C#中解决Response.AddHeader("Content-Disposition", "attachment; filename=" + filename)下载文件时文件名乱码的问题
问题:下载文件时文件名乱码怎么解决? 在C#写后台代码过程中,经常遇到下载文件出现文件名乱码的问题,在网上找了很多方法,总是存在浏览器不兼容的问题,当IE浏览器不乱码时,火狐浏览器就会乱码,后来经过反 ...
- ie浏览器下载文件时文件名乱码
做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...
- python3中用django下载文件,中文名乱码怎么办?
前段时间被某个前端小可爱鄙视了一下,说我博客都一年不更新了,我不服,明明还有俩月才到一年呢.不过说是这么说,还是要更新一下的. 以上都是借口,下面开始正文. 我公司的某个内部系统,用djang ...
- vsftpd下载文件时内容乱码
windows客户端访问Linux服务端的ftp并下载文档时,内容会出现乱码,这是由于vsftpd文件服务器不支持转码功能 通过java FTPClient下载 方法为 OutputStream is ...
- 解决document.location.href下载文件时中文乱码
1:tomcat 安装路径下 找到 conf文件下的server.xml 2:<Connector port="8080" URIEncoding="utf-8&q ...
- 转载: 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
最近在做一个下载工具时,发现CSDN上的资源下载时竟然没有被拦截到,经过分析,终于有了一个发现,解决了我之前做文件下载时的乱码问题,所以转载这篇释疑文章,希望有人可以看到,可以从中得到帮助,也用来备忘 ...
- java下载文件时文件名出现乱码的解决办法
转: java下载文件时文件名出现乱码的解决办法 2018年01月12日 15:43:32 橙子橙 阅读数:6249 java下载文件时文件名出现乱码的解决办法: String userAgent ...
- IE浏览器下载文件中文文件名乱码问题解决
处理过程 根据IE的F12中的log提示,是因为http头信息中的编码替换了html文件中的编码.我最初的思路是设置Tomcat默认编码,但是我发现我已经在Server.xml中设置过,想到这里我想到 ...
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition)
留坑 参考: 正确处理下载文件时HTTP头的编码问题(Content-Disposition) HTTP协议header中Content-Disposition中文文件名乱码 文件下载,content ...
随机推荐
- ASP.NET Eval四种绑定方式
1.1.x中的数据绑定语法 <asp:Literal id="litEval2" runat="server" Text='<%#DataBinde ...
- [系统集成] Android 自动构建系统
一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包android 的打包一般 ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建
项目中需要整合activiti-modeler自定义流程,找了很多资料后,终于成功的跳转到activiti-modeler流程设计界面,以下是记录: 一.整合基础:eclipse4.4.1.tomca ...
- Elastic Search(一)
一. 安装插件 Marvel集群管理 root@lj-ThinkPad-L460:~# sudo bin/plugin install license root@lj-ThinkPad-L460:~# ...
- Spark1.4启动spark-shell时initializing失败
错误信息如下: 5/11/03 16:48:15 INFO spark.SparkContext: Running Spark version 1.4.1 15/11/03 16:48:15 WARN ...
- 使用SparkSQL实现多线程分页查询并写入文件
一.由于具有多张宽表且字段较多,每个宽表数据大概为4000万条,根据业务逻辑拼接别名,并每张宽表的固定字段进行left join 拼接SQL.这样就能根据每个宽表的主列,根据每个宽表的不同字段关联出一 ...
- DBA_Oracle Erp加密和解密账户密码(案例)
2014-09-09 Created By BaoXinjian
- [物理学与PDEs]第2章 流体力学
[物理学与PDEs]第2章第1节 理想流体力学方程组 1.1 预备知识 [物理学与PDEs]第2章第1节 理想流体力学方程组 1.2 理想流体力学方程组 [物理学与PDEs]第2章第1节 理想流体力学 ...
- java web 插件式开发
1.支持pagelet2.菜单扩展3.静态文件访问 4.开发环境. 5.OSGi平台. tms:pagelet 是一个jsp标签 <div> <tms:pagelet show=&q ...
- MySQL运算符之 <=>
问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊? ...