java.lang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符-对于输入字符串:“&p”

时间:2019-05-28 10:46:01

标签: java

public static String sanitizeInput(String query){
    try {
        String decodedString = null;
        if (query.contains(Constants.Strings.DECODE_PERCENT) || query.contains(Constants.Strings.PLUS)) {
            decodedString = URLDecoder.decode(query, Constants.Encoding.UTF8);
            if (query.equals(URLEncoder.encode(decodedString, Constants.Encoding.UTF8))) {
                return query;
            }
        }
        return query.contains(Constants.Strings.PERCENT) ?  URLEncoder.encode(query, Constants.Encoding.UTF8) : query ;
    }  catch (UnsupportedEncodingException e) {
        LOG.error("Error while encoding query", e);
    }
    return query;
}

在搜索输入中使用%时出现此错误。

我的逻辑说如果字符串中已经存在%25格式,那么它已经是编码格式。然后我应用解码。如果查询字符串仅包含%,则它已经是解码格式,因此我们避免解码。

0 个答案:

没有答案