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

以上,哈哈完美兼容三个浏览器。问题解决。

 

posted @ 2017-09-14 17:07  十月桃子  阅读(6225)  评论(1编辑  收藏  举报