Package org.apache.commons.codec.net
Class PercentCodec
- java.lang.Object
-
- org.apache.commons.codec.net.PercentCodec
-
- All Implemented Interfaces:
BinaryDecoder
,BinaryEncoder
,Decoder
,Encoder
public class PercentCodec extends java.lang.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 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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
decode(byte[] bytes)
Decode bytes encoded with Percent-Encoding based on RFC 3986.java.lang.Object
decode(java.lang.Object obj)
Decodes a byte[] Object, whose bytes are encoded with Percent-Encoding.byte[]
encode(byte[] bytes)
Percent-Encoding based on RFC 3986.java.lang.Object
encode(java.lang.Object obj)
Encodes an object into using the Percent-Encoding.
-
-
-
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 encodedplusForSpace
- 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 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.
-
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 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.
-
encode
public java.lang.Object encode(java.lang.Object obj) throws EncoderException
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
-
decode
public java.lang.Object decode(java.lang.Object obj) throws DecoderException
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
-
-