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