下载文件的文件名出现乱码问题

叶知秋 发布于 2012/05/17 15:15
阅读 3K+
收藏 0
我在程序中实现了一个下载功能,2天前都是好好的,马上要给客户测试了,今天我再测试一下,发现 在下载功能中 点击下载后,下载下来的文件的文件名是乱码了,我原来下载后的文件名是:通讯录.csv,现在是:乱码.csv,在ie浏览器上用是好的,在搜狗浏览器上不行,请教下牛人是什么原因

以下是问题补充:

@叶知秋:下载的文件里面的内容是正确的,也没乱码问题 (2012/05/17 15:21)
加载中
0
叶知秋
叶知秋

String filename="通讯录.csv";

response.setHeader("Content-Disposition","attachment;"+"filename="+new String(filename.getBytes(),"ISO-8859-1"));  

这是我写的文件名的代码

0
红薯
红薯

http://www.oschina.net/code/snippet_12_583

看看这个,虽然是PHP的,但是原理是相同的,同样适合Java

0
0
JqbR001
JqbR001
filename = new String(filename.getBytes("gbk"),"iso8859-1");

0
叶知秋
叶知秋
我这么试过,一样的还是有乱码
0
Monkey
Monkey
坑爹的编码,搜狗的默认编码是什么玩意啊。
0
叶知秋
叶知秋
什么意思?你遇到和我一样的问题?我刚给领导说了,在ie上可以再搜狗上不行
0
m
maohua
你怎么不用struts2提供的下载呢
叶知秋
叶知秋
我现在的那个项目是2年前的,框架都搭好了。
0
叶知秋
叶知秋
if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
    response.setHeader("Content-Disposition","attachment;"+
"filename="+ new String(filename.getBytes("UTF-8"), "ISO8859-1") );
}else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
    response.setHeader("Content-Disposition","attachment;"+ "filename="+ new 
String(filename.getBytes("gb2312"),"ISO-8859-1")); 
}

修改后 ,能在ie和火狐上正确显示现在文件的文件名
0
丁加砙
丁加砙
应该是不同浏览器的默认编码导致的,坑爹玩意..
返回顶部
顶部