Class QCodec
- java.lang.Object
-
- org.apache.commons.codec.net.QCodec
-
- All Implemented Interfaces:
Decoder
,Encoder
,StringDecoder
,StringEncoder
public class QCodec extends java.lang.Object implements StringEncoder, StringDecoder
Similar to the Quoted-Printable content-transfer-encoding defined in RFC 1521 and designed to allow text containing mostly ASCII characters to be decipherable on an ASCII terminal without decoding.RFC 1522 describes techniques to allow the encoding of non-ASCII text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message handling software.
This class is conditionally thread-safe. The instance field for encoding blanks is mutable
setEncodeBlanks(boolean)
but is not volatile, and accesses are not synchronised. If an instance of the class is shared between threads, the caller needs to ensure that suitable synchronisation is used to ensure safe publication of the value between threads, and must not invokesetEncodeBlanks(boolean)
after initial setup.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
decode(java.lang.Object obj)
Decodes a quoted-printable object into its original form.java.lang.String
decode(java.lang.String str)
Decodes a quoted-printable string into its original form.protected java.lang.String
decodeText(java.lang.String text)
Applies an RFC 1522 compliant decoding scheme to the given string of text.protected byte[]
doDecoding(byte[] bytes)
Decodes an array of bytes using the defined encoding scheme.protected byte[]
doEncoding(byte[] bytes)
Encodes an array of bytes using the defined encoding scheme.java.lang.Object
encode(java.lang.Object obj)
Encodes an object into its quoted-printable form using the default Charset.java.lang.String
encode(java.lang.String sourceStr)
Encodes a string into its quoted-printable form using the default Charset.java.lang.String
encode(java.lang.String sourceStr, java.lang.String sourceCharset)
Encodes a string into its quoted-printable form using the specified Charset.java.lang.String
encode(java.lang.String sourceStr, java.nio.charset.Charset sourceCharset)
Encodes a string into its quoted-printable form using the specified Charset.protected java.lang.String
encodeText(java.lang.String text, java.lang.String charsetName)
Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.protected java.lang.String
encodeText(java.lang.String text, java.nio.charset.Charset charset)
Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.java.nio.charset.Charset
getCharset()
Gets the default Charset name used for string decoding and encoding.java.lang.String
getDefaultCharset()
Gets the default Charset name used for string decoding and encoding.protected java.lang.String
getEncoding()
Returns the codec name (referred to as encoding in the RFC 1522).boolean
isEncodeBlanks()
Tests if optional transformation of SPACE characters is to be usedvoid
setEncodeBlanks(boolean b)
Defines whether optional transformation of SPACE characters is to be used
-
-
-
Field Detail
-
SEP
protected static final char SEP
Separator.- See Also:
- Constant Field Values
-
POSTFIX
protected static final java.lang.String POSTFIX
Prefix.- See Also:
- Constant Field Values
-
PREFIX
protected static final java.lang.String PREFIX
Postfix.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
QCodec
public QCodec()
Default constructor.
-
QCodec
public QCodec(java.nio.charset.Charset charset)
Constructor which allows for the selection of a default Charset.- Parameters:
charset
- the default string Charset to use.- Since:
- 1.7
- See Also:
- Standard charsets
-
QCodec
public QCodec(java.lang.String charsetName)
Constructor which allows for the selection of a default Charset.- Parameters:
charsetName
- the Charset to use.- Throws:
java.nio.charset.UnsupportedCharsetException
- If the named Charset is unavailable- Since:
- 1.7 throws UnsupportedCharsetException if the named Charset is unavailable
- See Also:
- Standard charsets
-
-
Method Detail
-
getEncoding
protected java.lang.String getEncoding()
Returns the codec name (referred to as encoding in the RFC 1522).- Returns:
- name of the codec
-
doEncoding
protected byte[] doEncoding(byte[] bytes)
Encodes an array of bytes using the defined encoding scheme.- Parameters:
bytes
- Data to be encoded- Returns:
- A byte array containing the encoded data
-
doDecoding
protected byte[] doDecoding(byte[] bytes) throws DecoderException
Decodes an array of bytes using the defined encoding scheme.- Parameters:
bytes
- Data to be decoded- Returns:
- a byte array that contains decoded data
- Throws:
DecoderException
- A decoder exception is thrown if a Decoder encounters a failure condition during the decode process.
-
encode
public java.lang.String encode(java.lang.String sourceStr, java.nio.charset.Charset sourceCharset) throws EncoderException
Encodes a string into its quoted-printable form using the specified Charset. Unsafe characters are escaped.- Parameters:
sourceStr
- string to convert to quoted-printable formsourceCharset
- the Charset for sourceStr- Returns:
- quoted-printable string
- Throws:
EncoderException
- thrown if a failure condition is encountered during the encoding process.- Since:
- 1.7
-
encode
public java.lang.String encode(java.lang.String sourceStr, java.lang.String sourceCharset) throws EncoderException
Encodes a string into its quoted-printable form using the specified Charset. Unsafe characters are escaped.- Parameters:
sourceStr
- string to convert to quoted-printable formsourceCharset
- the Charset for sourceStr- Returns:
- quoted-printable string
- Throws:
EncoderException
- thrown if a failure condition is encountered during the encoding process.
-
encode
public java.lang.String encode(java.lang.String sourceStr) throws EncoderException
Encodes a string into its quoted-printable form using the default Charset. Unsafe characters are escaped.- Specified by:
encode
in interfaceStringEncoder
- Parameters:
sourceStr
- string to convert to quoted-printable form- Returns:
- quoted-printable string
- Throws:
EncoderException
- thrown if a failure condition is encountered during the encoding process.
-
decode
public java.lang.String decode(java.lang.String str) throws DecoderException
Decodes a quoted-printable string into its original form. Escaped characters are converted back to their original representation.- Specified by:
decode
in interfaceStringDecoder
- Parameters:
str
- quoted-printable string to convert into its original form- Returns:
- original string
- Throws:
DecoderException
- A decoder exception is thrown if a failure condition is encountered during the decode process.
-
encode
public java.lang.Object encode(java.lang.Object obj) throws EncoderException
Encodes an object into its quoted-printable form using the default Charset. Unsafe characters are escaped.- Specified by:
encode
in interfaceEncoder
- Parameters:
obj
- object to convert to quoted-printable form- Returns:
- quoted-printable object
- Throws:
EncoderException
- thrown if a failure condition is encountered during the encoding process.
-
decode
public java.lang.Object decode(java.lang.Object obj) throws DecoderException
Decodes a quoted-printable object into its original form. Escaped characters are converted back to their original representation.- Specified by:
decode
in interfaceDecoder
- Parameters:
obj
- quoted-printable object to convert into its original form- Returns:
- original object
- Throws:
DecoderException
- Thrown if the argument is not aString
. Thrown if a failure condition is encountered during the decode process.
-
getCharset
public java.nio.charset.Charset getCharset()
Gets the default Charset name used for string decoding and encoding.- Returns:
- the default Charset name
- Since:
- 1.7
-
getDefaultCharset
public java.lang.String getDefaultCharset()
Gets the default Charset name used for string decoding and encoding.- Returns:
- the default Charset name
-
isEncodeBlanks
public boolean isEncodeBlanks()
Tests if optional transformation of SPACE characters is to be used- Returns:
true
if SPACE characters are to be transformed,false
otherwise
-
setEncodeBlanks
public void setEncodeBlanks(boolean b)
Defines whether optional transformation of SPACE characters is to be used- Parameters:
b
-true
if SPACE characters are to be transformed,false
otherwise
-
encodeText
protected java.lang.String encodeText(java.lang.String text, java.nio.charset.Charset charset) throws EncoderException
Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.This method constructs the "encoded-word" header common to all the RFC 1522 codecs and then invokes
doEncoding(byte [])
method of a concrete class to perform the specific encoding.- Parameters:
text
- a string to encodecharset
- a charset to be used- Returns:
- RFC 1522 compliant "encoded-word"
- Throws:
EncoderException
- thrown if there is an error condition during the Encoding process.- See Also:
- Standard charsets
-
encodeText
protected java.lang.String encodeText(java.lang.String text, java.lang.String charsetName) throws EncoderException, java.io.UnsupportedEncodingException
Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.This method constructs the "encoded-word" header common to all the RFC 1522 codecs and then invokes
doEncoding(byte [])
method of a concrete class to perform the specific encoding.- Parameters:
text
- a string to encodecharsetName
- the charset to use- Returns:
- RFC 1522 compliant "encoded-word"
- Throws:
EncoderException
- thrown if there is an error condition during the Encoding process.java.io.UnsupportedEncodingException
- if charset is not available- See Also:
- Standard charsets
-
decodeText
protected java.lang.String decodeText(java.lang.String text) throws DecoderException, java.io.UnsupportedEncodingException
Applies an RFC 1522 compliant decoding scheme to the given string of text.This method processes the "encoded-word" header common to all the RFC 1522 codecs and then invokes
doEncoding(byte [])
method of a concrete class to perform the specific decoding.- Parameters:
text
- a string to decode- Returns:
- A new decoded String or
null
if the input isnull
. - Throws:
DecoderException
- thrown if there is an error condition during the decoding process.java.io.UnsupportedEncodingException
- thrown if charset specified in the "encoded-word" header is not supported
-
-