json 特殊字符处理

使用URLEncoder.encode(value, "utf-8")编码,之后再以URLDecoder.decode(value, "utf-8");进行解码

但是在解码时
使用URLDecoder.decode() 方法接收参数时如果参数中含有“%”这个字符,就会抛异常 java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern -,
上面的字符串中'%'是一个中文字符'是',而转换的实现是将%后面的两个字符一起转为一个16进制数。拿"%是"来转换数字,肯定会有NumberFormatException异常。

类似的如果请求字符串中有'+',也会有问题。因为'+'被当做空格使用了。一个解决办法就是将%替换为%25。
data = data.replaceAll("%(?![0-9a-fA-F]{2})", "%25"); 
data = data.replaceAll("\\+", "%2B"); 

猜你喜欢

转载自leroy0910.iteye.com/blog/2398054