Package org.apache.tomcat.util.buf

## Class UDecoder

- java.lang.Object
- - org.apache.tomcat.util.buf.UDecoder

    public final class UDecoder
    extends java.lang.Object

All URL decoding happens here. This way we can reuse, review, optimize without adding complexity to the buffers. The conversion will modify the original buffer.

Author:
  Costin Manolache

### Field Summary

Fields
`static boolean` `ALLOW_ENCODED_SLASH` Deprecated.

### Constructor Summary

Constructors
`UDecoder()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`java.lang.String` `convert​(java.lang.String str, boolean query)` Deprecated. Unused.
`void` `convert​(ByteChunk mb, boolean query)` URLDecode, will modify the source.
`void` `convert​(ByteChunk mb, EncodedSolidusHandling encodedSolidusHandling)` URLDecode, will modify the source.
`void` `convert​(CharChunk mb, boolean query)` Deprecated. Unused.
`void` `convert​(MessageBytes mb, boolean query)` Deprecated. Unused.
`static java.lang.String` `URLDecode​(java.lang.String str)` Deprecated. Unused.
`static java.lang.String` `URLDecode​(java.lang.String str, java.nio.charset.Charset charset)` Decode and return the specified URL-encoded String.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### ALLOW_ENCODED_SLASH

    @Deprecated
    public static final boolean ALLOW_ENCODED_SLASH

Deprecated.

### Constructor Detail

#### UDecoder

    public UDecoder()

### Method Detail

#### convert

    public void convert​(ByteChunk mb,
                        boolean query)
                 throws java.io.IOException

URLDecode, will modify the source. Assumes source bytes are encoded using a superset of US-ASCII as per RFC 7230. "%2f" will be rejected unless the input is a query string.

Parameters:
  `mb` - The URL encoded bytes
  `query` - `true` if this is a query string. For a query string '+' will be decoded to ' '
Throws:
  `java.io.IOException` - Invalid %xx URL encoding

#### convert

    public void convert​(ByteChunk mb,
                        EncodedSolidusHandling encodedSolidusHandling)
                 throws java.io.IOException

URLDecode, will modify the source. Assumes source bytes are encoded using a superset of US-ASCII as per RFC 7230.

Parameters:
  `mb` - The URL encoded bytes
  `encodedSolidusHandling` - How should the %2f sequence handled by the decoder? For query strings this parameter will be ignored and the %2f sequence will be decoded
Throws:
  `java.io.IOException` - Invalid %xx URL encoding

#### convert

    @Deprecated
    public void convert​(CharChunk mb,
                        boolean query)
                 throws java.io.IOException

Deprecated.
Unused. Will be removed in Tomcat 10
In-buffer processing - the buffer will be modified.

WARNING: This method assumes US-ASCII encoding.

Parameters:
  `mb` - The URL encoded chars
  `query` - `true` if this is a query string
Throws:
  `java.io.IOException` - Invalid %xx URL encoding

#### convert

    @Deprecated
    public void convert​(MessageBytes mb,
                        boolean query)
                 throws java.io.IOException

Deprecated.
Unused. Will be removed in Tomcat 10
URLDecode, will modify the source.

WARNING: This method assumes US-ASCII encoding.

Parameters:
  `mb` - The URL encoded String, bytes or chars
  `query` - `true` if this is a query string
Throws:
  `java.io.IOException` - Invalid %xx URL encoding

#### convert

    @Deprecated
    public java.lang.String convert​(java.lang.String str,
                                    boolean query)

Deprecated.
Unused. Will be removed in Tomcat 10
%xx decoding of a string.

WARNING: This method assumes US-ASCII encoding.

FIXME: this is inefficient.

Parameters:
  `str` - The URL encoded string
  `query` - `true` if this is a query string
Returns:
  the decoded string

#### URLDecode

    @Deprecated
    public static java.lang.String URLDecode​(java.lang.String str)

Deprecated.
Unused. This will be removed in Tomcat 10 onwards
Decode and return the specified URL-encoded String. When the byte array is converted to a string, UTF-8 is used. This may be different than some other servers. It is assumed the string is not a query string.

Parameters:
  `str` - The url-encoded string
Returns:
  the decoded string
Throws:
  `java.lang.IllegalArgumentException` - if a '%' character is not followed by a valid 2-digit hexadecimal number

#### URLDecode

    public static java.lang.String URLDecode​(java.lang.String str,
                                             java.nio.charset.Charset charset)

Decode and return the specified URL-encoded String. It is assumed the string is not a query string.

Parameters:
  `str` - The url-encoded string
  `charset` - The character encoding to use; if null, UTF-8 is used.
Returns:
  the decoded string
Throws:
  `java.lang.IllegalArgumentException` - if a '%' character is not followed by a valid 2-digit hexadecimal number