java解決中文亂碼的幾種寫法


工作中總會遇到中文亂碼問題,以導出文件,文件名稱是中文的話,下載下來的文件名稱會亂碼問題,總結了幾種解決文件名亂碼的寫法,僅供參考。

 首先定義一個漢語字符串

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

以上,哈哈完美兼容三個瀏覽器。問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM