在开发过程中,遇到了上传附件,然后下载附件的功能,开发的时候一直使用的是谷歌浏览器,一直没出现什么问题。在测试的时候用其他浏览器下载的时候出现了文件名乱码问题。然后从网上找了找,整理了一下,大致分为两种情况吧。还有其他情况希望大家指出。
IE11浏览器出现乱码,然后修改如下:
response.setHeader("Content-disposition",
"attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
此时在IE11和谷歌都没有问题了,奇怪的是在火狐又出现了乱码,然后解决如下:
response.setHeader("Content-Disposition",
"attachment;filename="+ new String(fileName.getBytes("GB2312"),"ISO-8859-1"));
以上完成了谷歌、火狐与IE浏览器下载出现乱码的问题,整体代码如下,将火狐与其他分开考虑:
String userAgent = request.getHeader("USER-AGENT");
if(userAgent.contains("Firefox")){
response.setHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes("GB2312"),"ISO-8859-1"));
}else{
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
}
此时就解决了在以上浏览器中出现乱码的问题。