版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kikitious_Du/article/details/80519281
在使用URLDecoder.decode方法进行解析的时候,解析时的字符串是“20%刷卡金”,出现了下面的问题:
java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern:%刷卡
我们进入decode方法查看源码,会发现对 % 和 + 这两个字符做了特殊处理。
解决方法(参照ASCII编码表):
①将%号替换为%25
②将+号替换为%2B
String s = value.toString()
.replaceAll("%(?![0-9a-fA-F]{2})", "%25")
.replaceAll("\\+", "%2B");
valueString = URLDecoder.decode(s);
%(?![0-9a-fA-F]{2}) 表示的是:以%开始,随后跟着的两个字符既不是数字,也不是字母
扫描二维码关注公众号,回复:
3571089 查看本文章