应业务需求,写一个从云端服务器下载一个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");
完美解决,根据自身实际情况进行调整就可以了