工作中總會遇到中文亂碼問題,以導出文件,文件名稱是中文的話,下載下來的文件名稱會亂碼問題,總結了幾種解決文件名亂碼的寫法,僅供參考。
首先定義一個漢語字符串
String zhName = "錯誤碼模板";
一、java.net.URLEncoder.encode(zhName, "UTF-8");
這種寫法 在谷歌瀏覽器 、 IE瀏覽器上,表示很好用。直接解決掉了亂碼問題。
但是在火狐瀏覽器上,導出的文件名沒有解碼,如下圖。
二、new String(zhName.getBytes("UTF-8"),"iso-8859-1");
第二種寫法是實例化String,修改編碼格式。
經試驗,谷歌瀏覽器,火狐瀏覽器,都好用。但是IE瀏覽器又亂碼了。
此時有些凌亂了,如何同時兼容三個瀏覽器呢。接下來上大招。
三、
同時兼容chrome Firefox IE 三個瀏覽器寫法
String zhName = "錯誤碼模板";
String header = request.getHeader("User-Agent").toUpperCase();
if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
zhName = URLEncoder.encode(zhName, "utf-8");
zhName = zhName.replace("+", "%20"); //IE下載文件名空格變+號問題
} else {
zhName = new String(zhName.getBytes(), "ISO8859-1");
}
response.setHeader("Content-Disposition", "attachment;filename="+zhName+ ".txt");
以上,哈哈完美兼容三個瀏覽器。問題解決。