response.setHeader("Content-Disposition", "attachment; filename=123_文件.txt")

首先文件名是是以utf-8编码保存在数据库中,文件名暂定为1_中文文件123.txt,然后作如下处理来下载
response.setContentType("application/octet-stream;charset=UTF-8");
fileName=java.net.URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面点击文件下载的时候能够正确显示中文名称1_中文文件123.txt%0A,但是文件名的结尾却出现%0A字符(个人猜测是结束符的utf-8编码);但是此时在firefox下面却显示1_%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6123.txt%0A

然后我又试了另一种方案
response.setContentType("application/octet-stream;charset=UTF-8");
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面下载的时候弹chu的文件名是乱码;而在firefox下面却正确显示1_中文文件123.txt。

我想要的是不管是ie还是firefox都正确显示1_中文文件123.txt,不知道大家有没有遇到过类似的问题,解决之道是什么?
也许判断浏览器类型来进行不同的处理会是一种解决方案,但是这是一种个人觉得迫不得已的解决方案。

String agent = request.getHeader("USER-AGENT"); if (null != agent && -1 != agent.indexOf ("MSIE")) { String codedfilename = URLEncoder.encode(cfrfilename, "UTF8"); response.setContentType( "application/x-download"); response.setHeader("Content-Disposition","attachment;filename=" + codedfilename); } else if (null != agent && -1 != agent.indexOf("Mozilla")) { String codedfilename = MimeUtility.encodeText(cfrfilename, "UTF8", "B"); response.setContentType("application/x-download" ); response.setHeader("Content-Disposition","attachment;filename=" + codedfilename); } else { response.setContentType("application/x-download"); response.setHeader("Content-Disposition", "attachment;filename=" + cfrfilename); }

来源:http://www.javaeye.com/topic/50414

文件下载时,IE与FireFox对文件名编码的不同处理! Content-Disposition相关推荐

  1. 文件下载时,文件名乱码问题

    文件下载时,解决不同浏览器文件名乱码问题 public static String encodeFileName(HttpServletRequest request, String pFileNam ...

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

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

  3. 文件下载时设置文件名以及中文被转换成下划线的解决办法

    文件下载时中文被转换成下划线的解决办法 先上问题 解决办法很简单,直接在返回的时候加以下代码 response.setContentType("application/force-downl ...

  4. java 下载文件名 编码

    转:java下载文件时文件名乱码 – 智云一二三科技 方案一:将文件名编码为Unicode fileName = URLEncoder.encode(fileName, "UTF-8&quo ...

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

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

  6. linux检测文件名编码,Linux下查看文件编码,文件或文件名编码格式转换 | 缥缈的云...

    如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...

  7. 《Python Cookbook 3rd》笔记(5.14):忽略文件名编码

    忽略文件名编码 问题 你想使用原始文件名执行文件的 I/O 操作,也就是说文件名并没有经过系统默认编码去解码或编码过. 解法 默认情况下,所有的文件名都会根据 sys.getfilesystemenc ...

  8. java 实现文件下载保存框_Java开发网 - 任何类型的文件下载时都会弹出文件保存框的实现(原创)...

    于 2002-12-12 11:09 :):):)任何类型的文件下载时都会弹出文件保存框的实现:(:(:( 简介: 从事WEB程序设计的朋友一定都遇到过这种情况吧,对于一些操作系统可以识别的文件类型如 ...

  9. linux 保存文件名乱码怎么办,Linux 文件名编码转换 乱码 解决办法

    Linux中操作windows下的文件,可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Linux中如何查看文 ...

最新文章

  1. 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
  2. 【设计模式】软件设计七大原则 ( 开闭原则 )
  3. 前端开发利器webStorm 3.0配置使用
  4. 学习STL map, STL set之数据结构基础
  5. springboot2——MyBatis入门
  6. 王者荣耀专区系统服务器繁忙,王者荣耀跨系统转区开放!详细问答汇总,解决全部转区疑惑!...
  7. java容易搞混的技术_Java中比较容易混淆的知识点
  8. UTF-8与GB2312之间的互换
  9. MyEclipse或Eclipse中工程的导入和导出
  10. codevs——1517 求一次函数解析式
  11. 中国高铁走向全球,一个行业标准帮了大忙
  12. linux安装audit软件,linux audit工具
  13. php limit offset 1,laravel自定义分页的实现案例offset()和limit()
  14. bex5 php,BeX5企业微信集成
  15. vue 时间格式总结及转换
  16. 【ybt金牌导航2-3-3】【luogu P3975】K小子串 / 弦论
  17. 计算机安装Hp1005打印机,如何安装hp1005打印机驱动程序_安装步骤是什么
  18. 2022年度总结——2022我在CSDN的那些事暨2023我的目标展望:Pursue freedom Realize self-worth
  19. 设置自动关门时长_自动上锁,鹿客智能指纹锁classic2s,双十一值得买
  20. Xshell连接虚拟机失败,解决办法!

热门文章

  1. 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
  2. Physical Standby Database Failover
  3. Hadoop云计算大数据书籍分享
  4. 『HTML5挑战经典』是英雄就下100层-开源讲座(一)从天而降的英雄
  5. coreldraw水涟漪怎么做_不懂怎么挑选水处理设备?跟贝斯沃了解这3点再做决定,轻松挑出适合自己的...
  6. 中科院自动化所王金桥:深耕AI中台引擎,助力AI场景化、多元化落地...
  7. paip.提升性能----硬盘不同转速不同缓存对比转
  8. Direct3D的初始化
  9. 中国武侠片的50条爆笑定律
  10. springboot使用thymeleaf模板引擎时出现org.xml.sax.SAXParseException的原因与解决办法