code: protected static String decode(char[] component, String charset) 
          throws URIException {
          if (component == null) {
              throw new IllegalArgumentException("Component array of chars may not be null");
          }
          return decode(new String(component), charset);
      }
docs: Decodes URI encoded string.
  
  This is a two mapping, one from URI characters to octets, and
  subsequently a second from octets to original characters:
  <p><blockquote><pre>
  URI character sequence-&gt;octet sequence-&gt;original character sequence
  </pre></blockquote><p>
  
  A URI must be separated into its components before the escaped
  characters within those components can be allowedly decoded.
  <p>
  Notice that there is a chance that URI characters that are non UTF-8
  may be parsed as valid UTF-8.  A recent non-scientific analysis found
  that EUC encoded Japanese words had a 2.7% false reading; SJIS had a
  0.0005% false reading; other encoding such as ASCII or KOI-8 have a 0%
  false reading.
  <p>
  The percent "%" character always has the reserved purpose of being
  the escape indicator, it must be escaped as "%25" in order to be used
  as data within a URI.
  <p>
  The unescape method is internally performed within this method.
  
  @param component the URI character sequence
  @param charset the protocol charset
  @return original character sequence
  @throws URIException incomplete trailing escape pattern or unsupported
  character encoding