public static String urlDecode(String encoded){
  int length=encoded.length();
  byte[] buff=new byte[length];
  int j=0;
  for (int i=0; i < length; i++) {
    char ch=encoded.charAt(i);
    if (ch == '+') {
      buff[j++]=' ';
    }
 else     if (ch == '%') {
      buff[j++]=(byte)Integer.parseInt(encoded.substring(i + 1,i + 3),16);
      i+=2;
    }
 else {
      if (SysProperties.CHECK) {
        if (ch > 127 || ch < ' ') {
          throw new IllegalArgumentException("Unexpected char " + (int)ch + " decoding "+ encoded);
        }
      }
      buff[j++]=(byte)ch;
    }
  }
  String s=new String(buff,0,j,Constants.UTF8);
  return s;
}

public static String urlDecode ( String encoded ) { int length = encoded . length ( ) ; byte [ ] buff = new byte [ length ] ; int j = 0 ; for ( int i = 0 ; i < length ; i ++ ) { char ch = encoded . charAt ( i ) ; if ( ch == '+' ) { buff [ j ++ ] = ' ' ; } else if ( ch == '%' ) { buff [ j ++ ] = ( byte ) Integer . parseInt ( encoded . substring ( i + 1 , i + 3 ) , 16 ) ; i += 2 ; } else { if ( SysProperties . CHECK ) { if ( ch > 127 || ch < ' ' ) { throw new IllegalArgumentException ( "Unexpected char " + ( int ) ch + " decoding " + encoded ) ; } } buff [ j ++ ] = ( byte ) ch ; } } String s = new String ( buff , 0 , j , Constants . UTF8 ) ; return s ; }
decode the url to a string .
