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");
}