# Class URLEncoder

java.lang.Object
org.apache.catalina.util.URLEncoder

All Implemented Interfaces:
  `Cloneable`

public final class URLEncoder extends Object implements Cloneable
This class is very similar to the java.net.URLEncoder class. Unfortunately, with java.net.URLEncoder there is no way to specify to the java.net.URLEncoder which characters should NOT be encoded. This code was moved from DefaultServlet.java

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final URLEncoder`
  `DEFAULT`
  Pre-configured encoder for URI paths.
  `static final URLEncoder`
  `QUERY`
  Pre-configured encoder for query strings.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `URLEncoder()`
  Constructs a new URLEncoder with alphanumeric characters as safe.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addSafeCharacter(char c)`
  Marks the given character as safe (not requiring encoding).
  `Object`
  `clone()`
  `String`
  `encode(String path, Charset charset)`
  URL encodes the provided path using the given character set.
  `void`
  `removeSafeCharacter(char c)`
  Removes the given character from the set of safe characters.
  `void`
  `setEncodeSpaceAsPlus(boolean encodeSpaceAsPlus)`
  Sets whether space characters should be encoded as '+' instead of '%20'.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### DEFAULT

    public static final URLEncoder DEFAULT
    Pre-configured encoder for URI paths.

  - ### QUERY

    public static final URLEncoder QUERY
    Pre-configured encoder for query strings.

- ## Constructor Details

  - ### URLEncoder

    public URLEncoder()
    Constructs a new URLEncoder with alphanumeric characters as safe.

- ## Method Details

  - ### addSafeCharacter

    public void addSafeCharacter(char c)
    Marks the given character as safe (not requiring encoding).
    Parameters:
      `c` - the character

  - ### removeSafeCharacter

    public void removeSafeCharacter(char c)
    Removes the given character from the set of safe characters.
    Parameters:
      `c` - the character

  - ### setEncodeSpaceAsPlus

    public void setEncodeSpaceAsPlus(boolean encodeSpaceAsPlus)
    Sets whether space characters should be encoded as '+' instead of '%20'.
    Parameters:
      `encodeSpaceAsPlus` - true to use '+' for spaces

  - ### encode

    public String encode(String path, Charset charset)
    URL encodes the provided path using the given character set.
    Parameters:
      `path` - The path to encode
      `charset` - The character set to use to convert the path to bytes
    Returns:
      The encoded path

  - ### clone

    public Object clone()
    Overrides:
      `clone` in class `Object`