public class QCodec extends Object implements StringEncoder, StringDecoder
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 encodeBlanks
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 invoke
setEncodeBlanks(boolean)
after initial setup.
Modifier and Type | Field and Description |
---|---|
protected static String |
POSTFIX
Prefix.
|
protected static String |
PREFIX
Postfix.
|
protected static char |
SEP
Separator.
|
Constructor and Description |
---|
QCodec()
Default constructor.
|
QCodec(java.nio.charset.Charset charset)
Constructor which allows for the selection of a default Charset.
|
QCodec(String charsetName)
Constructor which allows for the selection of a default Charset.
|
Modifier and Type | Method and Description |
---|---|
Object |
decode(Object obj)
Decodes a quoted-printable object into its original form.
|
String |
decode(String str)
Decodes a quoted-printable string into its original form.
|
protected String |
decodeText(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.
|
Object |
encode(Object obj)
Encodes an object into its quoted-printable form using the default Charset.
|
String |
encode(String sourceStr)
Encodes a string into its quoted-printable form using the default Charset.
|
String |
encode(String sourceStr,
java.nio.charset.Charset sourceCharset)
Encodes a string into its quoted-printable form using the specified Charset.
|
String |
encode(String sourceStr,
String sourceCharset)
Encodes a string into its quoted-printable form using the specified Charset.
|
protected String |
encodeText(String text,
java.nio.charset.Charset charset)
Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.
|
protected String |
encodeText(String text,
String charsetName)
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.
|
String |
getDefaultCharset()
Gets the default Charset name used for string decoding and encoding.
|
protected 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 used
|
void |
setEncodeBlanks(boolean b)
Defines whether optional transformation of SPACE characters is to be used
|
protected static final String POSTFIX
protected static final String PREFIX
protected static final char SEP
public QCodec()
public QCodec(java.nio.charset.Charset charset)
charset
- the default string Charset to use.public QCodec(String charsetName)
charsetName
- the Charset to use.java.nio.charset.UnsupportedCharsetException
- If the named Charset is unavailablepublic Object decode(Object obj) throws DecoderException
decode
in interface Decoder
obj
- quoted-printable object to convert into its original formDecoderException
- Thrown if the argument is not a String
. Thrown if a failure condition is encountered
during the decode process.public String decode(String str) throws DecoderException
decode
in interface StringDecoder
str
- quoted-printable string to convert into its original formDecoderException
- A decoder exception is thrown if a failure condition is encountered during the decode process.protected byte[] doDecoding(byte[] bytes) throws DecoderException
bytes
- Data to be decodedDecoderException
- A decoder exception is thrown if a Decoder encounters a failure condition during the decode process.protected byte[] doEncoding(byte[] bytes)
bytes
- Data to be encodedpublic Object encode(Object obj) throws EncoderException
encode
in interface Encoder
obj
- object to convert to quoted-printable formEncoderException
- thrown if a failure condition is encountered during the encoding process.public String encode(String sourceStr) throws EncoderException
encode
in interface StringEncoder
sourceStr
- string to convert to quoted-printable formEncoderException
- thrown if a failure condition is encountered during the encoding process.public String encode(String sourceStr, java.nio.charset.Charset sourceCharset) throws EncoderException
sourceStr
- string to convert to quoted-printable formsourceCharset
- the Charset for sourceStrEncoderException
- thrown if a failure condition is encountered during the encoding process.public String encode(String sourceStr, String sourceCharset) throws EncoderException
sourceStr
- string to convert to quoted-printable formsourceCharset
- the Charset for sourceStrEncoderException
- thrown if a failure condition is encountered during the encoding process.public java.nio.charset.Charset getCharset()
public String getDefaultCharset()
protected String getEncoding()
public boolean isEncodeBlanks()
true
if SPACE characters are to be transformed, false
otherwisepublic void setEncodeBlanks(boolean b)
b
- true
if SPACE characters are to be transformed, false
otherwiseprotected String decodeText(String text) throws DecoderException, UnsupportedEncodingException
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.
text
- a string to decodenull
if the input is null
.DecoderException
- thrown if there is an error condition during the decoding process.UnsupportedEncodingException
- thrown if charset specified in the "encoded-word" header is not supportedprotected String encodeText(String text, java.nio.charset.Charset charset) throws EncoderException
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.
text
- a string to encodecharset
- a charset to be usedEncoderException
- thrown if there is an error condition during the Encoding process.protected String encodeText(String text, String charsetName) throws EncoderException, UnsupportedEncodingException
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.
text
- a string to encodecharsetName
- the charset to useEncoderException
- thrown if there is an error condition during the Encoding process.UnsupportedEncodingException
- if charset is not available