Class PercentEscaper


  • @Beta
    @GwtCompatible
    public final class PercentEscaper
    extends com.google.common.escape.UnicodeEscaper
    NOTICE: This class is copied from Guava 28.2-jre and modified to support lowercase hex encoding and either encoding all characters not in a given set or encoding only the characters in a given set by Peter Winckles.

    A UnicodeEscaper that escapes some set of Java characters using a UTF-8 based percent encoding scheme. The set of safe characters (those which remain unescaped) can be specified on construction.

    This class is primarily used for creating URI escapers in UrlEscapers but can be used directly if required. While URI escapers impose specific semantics on which characters are considered 'safe', this class has a minimal set of restrictions.

    When escaping a String, the following rules apply:

    • All specified safe characters remain unchanged.
    • If plusForSpace was specified, the space character " " is converted into a plus sign "+".
    • All other characters are converted into one or more bytes using UTF-8 encoding and each byte is then represented by the 3-character string "%XX", where "XX" is the two-digit, uppercase, hexadecimal representation of the byte value.

    For performance reasons the only currently supported character encoding of this class is UTF-8.

    Note: This escaper produces uppercase hexadecimal sequences.

    Since:
    15.0
    Author:
    David Beaumont
    • Method Detail

      • builder

        public static PercentEscaper.Builder builder()
        Creates a builder without any safe or unsafe characters set.
        Returns:
        builder
      • builderWithSafeAlphaNumeric

        public static PercentEscaper.Builder builderWithSafeAlphaNumeric()
        Creates a builder with safe alpha numeric characters preconfigured.
        Returns:
        builder
      • nextEscapeIndex

        protected int nextEscapeIndex​(CharSequence csq,
                                      int index,
                                      int end)
        Overrides:
        nextEscapeIndex in class com.google.common.escape.UnicodeEscaper
      • escape

        public String escape​(String s)
        Overrides:
        escape in class com.google.common.escape.UnicodeEscaper
      • escape

        protected char[] escape​(int cp)
        Escapes the given Unicode code point in UTF-8.
        Specified by:
        escape in class com.google.common.escape.UnicodeEscaper