Home All Groups
commons-codec / org / apache / commons / codec / net / PercentCodec.html /
org.apache.commons.codec.net

Class PercentCodec

  • All Implemented Interfaces:
    BinaryDecoder, BinaryEncoder, Decoder, Encoder

    public class PercentCodec
    extends Object
    implements BinaryEncoder, BinaryDecoder
    Implements the Percent-Encoding scheme, as described in HTTP 1.1 specification. For extensibility, an array of special US-ASCII characters can be specified in order to perform proper URI encoding for the different parts of the URI.

    This class is immutable. It is also thread-safe besides using BitSet which is not thread-safe, but its public interface only call the access

    Since:
    1.12
    See Also:
    Percent-Encoding
    • Constructor Summary

      Constructors 
      Constructor and Description
      PercentCodec()
      Constructs a Percent coded that will encode all the non US-ASCII characters using the Percent-Encoding while it will not encode all the US-ASCII characters, except for character '%' that is used as escape character for Percent-Encoding.
      PercentCodec(byte[] alwaysEncodeChars, boolean plusForSpace)
      Constructs a Percent codec by specifying the characters that belong to US-ASCII that should always be encoded.
    • Constructor Detail

      • PercentCodec

        public PercentCodec()
        Constructs a Percent coded that will encode all the non US-ASCII characters using the Percent-Encoding while it will not encode all the US-ASCII characters, except for character '%' that is used as escape character for Percent-Encoding.
      • PercentCodec

        public PercentCodec(byte[] alwaysEncodeChars,
                            boolean plusForSpace)
        Constructs a Percent codec by specifying the characters that belong to US-ASCII that should always be encoded. The rest US-ASCII characters will not be encoded, except for character '%' that is used as escape character for Percent-Encoding.
        Parameters:
        alwaysEncodeChars - the unsafe characters that should always be encoded
        plusForSpace - the flag defining if the space character should be encoded as '+'
    • Method Detail

      • encode

        public byte[] encode(byte[] bytes)
                      throws EncoderException
        Percent-Encoding based on RFC 3986. The non US-ASCII characters are encoded, as well as the US-ASCII characters that are configured to be always encoded.
        Specified by:
        encode in interface  BinaryEncoder
        Parameters:
        bytes - Data to be encoded
        Returns:
        A byte array containing the encoded data
        Throws:
        EncoderException - thrown if the Encoder encounters a failure condition during the encoding process.
      • decode

        public byte[] decode(byte[] bytes)
                      throws DecoderException
        Decode bytes encoded with Percent-Encoding based on RFC 3986. The reverse process is performed in order to decode the encoded characters to Unicode.
        Specified by:
        decode in interface  BinaryDecoder
        Parameters:
        bytes - A byte array which has been encoded with the appropriate encoder
        Returns:
        a byte array that contains decoded content
        Throws:
        DecoderException - A decoder exception is thrown if a Decoder encounters a failure condition during the decode process.
      • encode

        public Object encode(Object obj)
                      throws EncoderException
        Encodes an object into using the Percent-Encoding. Only byte[] objects are accepted.
        Specified by:
        encode in interface  Encoder
        Parameters:
        obj - the object to encode
        Returns:
        the encoding result byte[] as Object
        Throws:
        EncoderException - if the object is not a byte array
      • decode

        public Object decode(Object obj)
                      throws DecoderException
        Decodes a byte[] Object, whose bytes are encoded with Percent-Encoding.
        Specified by:
        decode in interface  Decoder
        Parameters:
        obj - the object to decode
        Returns:
        the decoding result byte[] as Object
        Throws:
        DecoderException - if the object is not a byte array

Copyright © 2002–2020 The Apache Software Foundation. All rights reserved.