解决中文乱码
在java接口工程中,参数中使用中文或者特殊字符时,有时候会出现乱码的问题,或者传入的参数正确,但是却会报错,产生数据错误,解决办法就是客户端对参数进行urlencode转码,最好转两次(可以有效的避开“提交多字节字符”的这个棘手问题)
为什么需要进行两次转码,这就设计到了容器解码和编码的原理了。
在进行编码时,第一次编码是按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD] 此时已经没有了多字节字符,全部是单字节字符。
第二次编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%25.把数组最后变成[%25E4,%25B8,%25AD]然后就把处理后的数据[%25E4,%25B8,%25AD]发往服务器端
当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数应用服务器最初获得的就是发送[%25E4,%25B8,%25AD],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,都能得到[%E4,%B8,%AD],因为都会把%25解析成%.并把这个值返回给getParameter方法。
我们只需要再调用URLDecode方法转码为utf-8即可
接口参数乱码
最新推荐文章于 2023-05-17 11:21:01 发布