Firefox下载文件时中文名乱码问题 怼烎@ 2023-06-30 09:12 1阅读 0赞 为了形象化,先看几张不同浏览器下下载文件时的效果图: 1:Firefox 36.0.1 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70]很明显在Firefox下出现了乱码,出现乱码一般是字符集的问题,这是怎么回事呢?为什么其他的浏览器都没有问题呢?看了一下Firefox的字符集是Unicode,改成简体中文看看,发现文件名是不乱了,不过网页的其他部分全乱了,连百度都乱了!如下图所示: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 1]![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 2]恩,一时我也不知道是什么原因,看看Firefox下的下载文件的响应信息是什么样的,如下图所示: ![在这里插入图片描述][20200116162829989.png]以前为了防止出现乱码问题,后台的文件名是经过这个转换的(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部分),用到的getRequest()可以替换为request 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修改后的效果如下所示: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 3] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20200116162623627.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI=,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20200116162808956.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI=,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 2]: https://img-blog.csdnimg.cn/20200116162810394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI=,size_16,color_FFFFFF,t_70 [20200116162829989.png]: https://img-blog.csdnimg.cn/20200116162829989.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20200116162915187.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R4eXpoYmI=,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...