URLDecoder: Illegal hex characters in escape (%) pattern – For input string: “

There is a major issue with the accepted answer. Characters that get encoded have % and + signs in them, so although this helps with % and + characters in a string, it also doesn’t decode things like %20 (space) because you are taking out the percent before decoding.

A solution is to replace %2B (+) and %25 (%) instead. Something like:

   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;
   }

“+” is a special character which denotes a quantifier meaning one of more occurrences. So one should use “\+”

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)