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

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `UDecoder()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `convert​(ByteChunk mb, boolean query)` | URLDecode, will modify the source.
    `void` | `convert​(ByteChunk mb, EncodedSolidusHandling encodedSolidusHandling)` | URLDecode, will modify the source.
    `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`

- - ### 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

    - #### 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