java 接收参数乱码_Java接受请求参数中文乱码的终极代码(自动识别乱码)

该博客探讨了如何解决请求方编码与接口编码不一致导致的乱码问题。提出了一种通过检测字符串是否包含乱码的方法,并提供了解决乱码的代码示例,确保中文内容能正确解码。同时提醒,直接对非乱码中文使用解码操作可能会导致新的乱码问题。
摘要由CSDN通过智能技术生成

很多时候,请求方编码和接口编码不一样导致乱码。

这个方法可以做到,自动解码乱码。

其实乱码转中文还好点。

只需要:String str = new String(str.getBytes("ISO-8859-1"),"UTF-8");

但是,如果你贸然对中文执行上面的代码,反而会吧中文变成乱码。

c62f3953c17e629d6e1752b45459b63c.png

所以我们需要判断接收到的是不是乱码。

所以我们组合下:

定义一个方法:public static boolean hasMessyCode(String str){

return !java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(str);

}if(hasMessyCode(name)){

name = new String(name.getBytes("iso-8859-1"),"UTF-8");

System.out.println("发现转码,转码后的数据:"+name);

}

System.out.println(name);

如果我们给的name参数是乱码:

5558aab897823a21bd2bacee7694f89d.png

5de020eef88508ed4c4217b74eb0fd45.png

如果是正常的中文:

43ba881b08b63dda5518c2f42a2a35fb.png

8bdd799cf63d3da673c0584fb326bc08.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值