解决Request.getParameter取不到特殊字符bug

今天系统之间联调,发现对端平台发过来的json串,到我们系统获取不到,经过排查是因为对端系统发起的json串中有"#"这类特殊字符,我们用request.getparamter获取不到。

解决办法:

如果是前端发送的要用encodeURI编码,编码之后我们用request.getparamter就可以获取到了,然后后端用URLDecoder.decode(加密串) 解密。

如果是后端发送URLEncoder.encode(要加密的串)加密。

使用URLDecoder.decode(加密串) 解密还有个好处就是如果是明文,那么解密出来还是明文,如果是密文,也可以正常解密。如下案例:

        String s = "abc#def";
        b = URLDecoder.decode(s);
        System.out.println("直接解密后数据" + b);
        b = URLEncoder.encode(s);
        System.out.println("编码后数据"+" "+b);
        b = URLDecoder.decode(b);
        System.out.println("解码后数据" + b); 

结果:

image.png


版权声明:本文为Ztvue原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。