文件下载时,IE与FireFox对文件名编码的不同处理! Content-Disposition
2010-09-09 19:31
459 查看
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,不知道大家有没有遇到过类似的问题,解决之道是什么?
也许判断浏览器类型来进行不同的处理会是一种解决方案,但是这是一种个人觉得迫不得已的解决方案。
来源:http://www.javaeye.com/topic/50414
首先文件名是是以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
相关文章推荐
- <转载>正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 使用Content-Disposition: attachment; filename=FILENAME,在Firefox浏览器中下载文件,文件名中文乱码问题解决。
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- JavaWeb开发中,文件下载的时候,ie和firefox文件名的处理
- 转:正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 转载: 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 正确处理下载文件时中文文件名乱码的问题(Content-Disposition)
- ajax请求服务器数据包含中文处理以及MVC中下载文件名在ie和firefox中的处理
- 网页下载IE,FireFox文件名编码
- Java strtus2文件下载不同浏览器文件名中文乱码处理
- content-disposition attachment filename 在Firefox和IE中得到不同的结果
- http下载文件,中文文件名在firefox下编码问题
- 文件下载Content-disposition(与在文件名文件乱码问题)