java button中文乱码_java解决中文乱码的几种写法

这篇博客探讨了在Java中处理中文文件名乱码的问题,特别是在不同浏览器(Chrome、Firefox和IE)下导出文件时。作者分享了三种方法:URLEncoder.encode()、newString()和针对不同浏览器的条件判断。最后提出了一种兼容所有三种浏览器的解决方案,通过检查User-Agent头来适配不同的编码方式,成功解决了文件名乱码的难题。
摘要由CSDN通过智能技术生成

工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考。

首先定义一个汉语字符串

String zhName = "错误码模板";

一、java.net.URLEncoder.encode(zhName, "UTF-8");

这种写法 在谷歌浏览器 、 IE浏览器上,表示很好用。直接解决掉了乱码问题。

但是在火狐浏览器上,导出的文件名没有解码,如下图。

4be0e2c6451d4d3d57e8dc766ca78aa2.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值