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格式,那么它已经是编码格式。然后我应用解码。如果查询字符串仅包含%,则它已经是解码格式,因此我们避免解码。