web开发中,如果浏览器上有一个超链接,点击它后,弹出的下载框中文件名是乱码或不显示的时候,往往是由于我们没有对中文文件名进行编码处理,所以,这里提供一个中文文件下载的方法,以供参考。
针对浏览器类型,对文件名字做编码处理 Firefox (Base64) , IE、Chrome(UTF-8)。。。
- 如果文件的名字带有中文,那么需要对这个文件名进行编码处理
- 如果是IE ,或者 Chrome (谷歌浏览器) ,使用URLEncoding 编码
- 如果是Firefox , 使用Base64编码
代码如下:
public class DownLoadUtil {
public static String base64EncodeFileName(String fileName) {
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
return "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
// 获取来访的客户端类型
String clientType = request.getHeader("User-Agent");
if (clientType.contains("Firefox")) {
fileName = DownLoadUtil.base64EncodeFileName(fileName);
} else {
//IE ,或者 Chrome (谷歌浏览器) ,
//对中文的名字进行编码处理
fileName = URLEncoder.encode(fileName,"UTF-8");
}