URLDecoder报错

技术 · 2020-07-28

URLDecoder.decode(param,"utf-8");

有时候会出现类似如下的错误:
URLDecoder异常Illegal hex characters in escape (%)

这是因为传参有一些特殊字符,比如%号或者说+号,导致不能解析,报错
解决方法是:
public static String replacer(StringBuffer outBuffer) {

  String data = outBuffer.toString();
  try {
     data = data.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
     data = data.replaceAll("\\+", "%2B");
     data = URLDecoder.decode(data, "utf-8");
  } catch (Exception e) {
     e.printStackTrace();
  }
  return data;

}

Theme Jasmine by Kent Liao