Package org.apache.commons.codec.net
Class PercentCodec
java.lang.Object
org.apache.commons.codec.net.PercentCodec
- All Implemented Interfaces:
BinaryDecoder
,BinaryEncoder
,Decoder
,Encoder
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:
-
Constructor Summary
ConstructorDescriptionConstructs 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. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
decode
(byte[] bytes) Decodes bytes encoded with Percent-Encoding based on RFC 3986.Decodes a byte[] Object, whose bytes are encoded with Percent-Encoding.byte[]
encode
(byte[] bytes) Percent-Encoding based on RFC 3986.Encodes an object into using the Percent-Encoding.
-
Constructor Details
-
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
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 encodedplusForSpace
- the flag defining if the space character should be encoded as '+'
-
-
Method Details
-
decode
Decodes 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 interfaceBinaryDecoder
- 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.
-
decode
Decodes a byte[] Object, whose bytes are encoded with Percent-Encoding.- Specified by:
decode
in interfaceDecoder
- Parameters:
obj
- the object to decode- Returns:
- the decoding result byte[] as Object
- Throws:
DecoderException
- if the object is not a byte array
-
encode
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 interfaceBinaryEncoder
- 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.
-
encode
Encodes an object into using the Percent-Encoding. Only byte[] objects are accepted.- Specified by:
encode
in interfaceEncoder
- Parameters:
obj
- the object to encode- Returns:
- the encoding result byte[] as Object
- Throws:
EncoderException
- if the object is not a byte array
-