记一次使用JavaIO下载 浏览器(火狐)显示文件名乱码问题

 应业务需求,写一个从云端服务器下载一个PDF文档

码毕后,开测  下载页面不显示完整文件名(中文) 只显示英文数字

遂调编码  GBK→UTF-8     UTF-8→GBK   ISO8859。。。各种转..无济于事

最后火狐还是不显示  谷歌 IE 正常  经查阅 火狐是BASE64位....坑啊

解决方法:判断一下就可以了

//获取请求头中的User-Agent
    String agent = request.getHeader("User-Agent");
    // 根据不同的客户端进行不同的编码
    String filenameEncoder = "";
	if (agent.contains("MSIE")) {
		// IE浏览器
	filenameEncoder = URLEncoder.encode(file.getName(), "utf-8");
	filenameEncoder = filenameEncoder.replace("+", " ");
		} else if (agent.contains("Firefox")) {
	// 火狐浏览器
	BASE64Encoder base64Encoder = new BASE64Encoder();
        filenameEncoder = "=?utf-8?B?" +
        base64Encoder.encode(file.getName().getBytes("utf-8")) + "?="; 
		} else {
		// 其它浏览器
        filenameEncoder = URLEncoder.encode(file.getName(), "utf-8");
		}
 response.addHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);
 response.setContentType("application/pdf;charset=UTF-8");

完美解决,根据自身实际情况进行调整就可以了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值