Class QCodec

java.lang.Object
org.apache.commons.codec.net.QCodec
All Implemented Interfaces:
Decoder, Encoder, StringDecoder, StringEncoder

public class QCodec extends 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 synchronized. If an instance of the class is shared between threads, the caller needs to ensure that suitable synchronization is used to ensure safe publication of the value between threads, and must not invoke setEncodeBlanks(boolean) after initial setup.

Since:
1.3
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final Charset
    The default Charset used for string decoding and encoding.
    protected static final String
    Prefix.
    protected static final String
    Postfix.
    protected static final char
    Separator.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Default constructor.
    QCodec(String charsetName)
    Constructor which allows for the selection of a default Charset.
    QCodec(Charset charset)
    Constructor which allows for the selection of a default Charset.
  • Method Summary

    Modifier and Type
    Method
    Description
    Decodes a quoted-printable object into its original form.
    Decodes a quoted-printable string into its original form.
    protected String
    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.
    Encodes an object into its quoted-printable form using the default Charset.
    encode(String sourceStr)
    Encodes a string into its quoted-printable form using the default Charset.
    encode(String sourceStr, String sourceCharset)
    Encodes a string into its quoted-printable form using the specified Charset.
    encode(String sourceStr, Charset sourceCharset)
    Encodes a string into its quoted-printable form using the specified 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.
    protected String
    encodeText(String text, Charset charset)
    Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.
    Gets the default Charset name used for string decoding and encoding.
    Gets the default Charset name used for string decoding and encoding.
    protected String
    Returns the codec name (referred to as encoding in the RFC 1522).
    boolean
    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • QCodec

      public QCodec()
      Default constructor.
    • QCodec

      public QCodec(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:
    • QCodec

      public QCodec(String charsetName)
      Constructor which allows for the selection of a default Charset.
      Parameters:
      charsetName - the Charset to use.
      Throws:
      UnsupportedCharsetException - If the named Charset is unavailable
      Since:
      1.7 throws UnsupportedCharsetException if the named Charset is unavailable
      See Also:
  • Method Details

    • decode

      public Object decode(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 interface Decoder
      Parameters:
      obj - quoted-printable object to convert into its original form
      Returns:
      original object
      Throws:
      DecoderException - Thrown if the argument is not a String. Thrown if a failure condition is encountered during the decode process.
    • decode

      public String decode(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 interface StringDecoder
      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.
    • 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.
    • 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
    • encode

      public Object encode(Object obj) throws EncoderException
      Encodes an object into its quoted-printable form using the default Charset. Unsafe characters are escaped.
      Specified by:
      encode in interface Encoder
      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.
    • encode

      public String encode(String sourceStr) throws EncoderException
      Encodes a string into its quoted-printable form using the default Charset. Unsafe characters are escaped.
      Specified by:
      encode in interface StringEncoder
      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.
    • encode

      public String encode(String sourceStr, 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 form
      sourceCharset - 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 String encode(String sourceStr, 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 form
      sourceCharset - the Charset for sourceStr
      Returns:
      quoted-printable string
      Throws:
      EncoderException - thrown if a failure condition is encountered during the encoding process.
    • getEncoding

      protected String getEncoding()
      Returns the codec name (referred to as encoding in the RFC 1522).
      Returns:
      name of the codec.
    • 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
    • decodeText

      protected String decodeText(String text) throws DecoderException, 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 doDecoding(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 is null.
      Throws:
      DecoderException - thrown if there is an error condition during the decoding process.
      UnsupportedEncodingException - thrown if charset specified in the "encoded-word" header is not supported
    • encodeText

      protected String encodeText(String text, 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 encode
      charset - 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:
    • encodeText

      protected String encodeText(String text, String charsetName) 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 encode
      charsetName - the charset to use
      Returns:
      RFC 1522 compliant "encoded-word"
      Throws:
      EncoderException - thrown if there is an error condition during the Encoding process.
      UnsupportedCharsetException - if charset is not available
      See Also:
    • getCharset

      public Charset getCharset()
      Gets the default Charset name used for string decoding and encoding.
      Returns:
      the default Charset name
      Since:
      1.7
    • getDefaultCharset

      public String getDefaultCharset()
      Gets the default Charset name used for string decoding and encoding.
      Returns:
      the default Charset name