java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern:%刷卡

版权声明:本文为博主原创文章,未经博主允许不得转载。 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})  表示的是:以%开始,随后跟着的两个字符既不是数字,也不是字母






猜你喜欢

转载自blog.csdn.net/Kikitious_Du/article/details/80519281