今天系统之间联调,发现对端平台发过来的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);
结果: