QuotedPrintableCodec (Encode/Decode Utilities (Version 1.10))
Date: 2016-03-08

org.apache.commons.codec.net

## Class QuotedPrintableCodec

- java.lang.Object
- - org.apache.commons.codec.net.QuotedPrintableCodec

- All Implemented Interfaces:
    BinaryDecoder, BinaryEncoder, Decoder, Encoder, StringDecoder, StringEncoder

      public class QuotedPrintableCodec
      extends Object
      implements BinaryEncoder, BinaryDecoder, StringEncoder, StringDecoder

  Codec for the Quoted-Printable section of RFC 1521.

  The Quoted-Printable encoding is intended to represent data that largely consists of octets that correspond to printable characters in the ASCII character set. It encodes the data in such a way that the resulting octets are unlikely to be modified by mail transport. If the data being encoded are mostly ASCII text, the encoded form of the data remains largely recognizable by humans. A body which is entirely ASCII may also be encoded in Quoted-Printable to ensure the integrity of the data should the message pass through a character- translating, and/or line-wrapping gateway.

  Note:

  Depending on the selected `strict` parameter, this class will implement a different set of rules of the quoted-printable spec:

  - `strict=false`: only rules #1 and #2 are implemented
  - `strict=true`: all rules #1 through #5 are implemented
  Originally, this class only supported the non-strict mode, but the codec in this partial form could already be used for certain applications that do not require quoted-printable line formatting (rules #3, #4, #5), for instance Q codec. The strict mode has been added in 1.10.

  This class is immutable and thread-safe.

  Since:
    1.3
  Version:
    $Id: QuotedPrintableCodec.java 1637069 2014-11-06 10:38:51Z tn $
  See Also:
    RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private Charset` | `charset` The default charset used for string decoding and encoding.
    `private static byte` | `CR`
    `private static byte` | `ESCAPE_CHAR`
    `private static byte` | `LF`
    `private static BitSet` | `PRINTABLE_CHARS` BitSet of printable characters as defined in RFC 1521.
    `private static int` | `SAFE_LENGTH` Safe line length for quoted printable encoded text.
    `private static byte` | `SPACE`
    `private boolean` | `strict` Indicates whether soft line breaks shall be used during encoding (rule #3-5).
    `private static byte` | `TAB`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `QuotedPrintableCodec()` Default constructor, assumes default charset of `Charsets.UTF_8`
    `QuotedPrintableCodec(boolean strict)` Constructor which allows for the selection of the strict mode.
    `QuotedPrintableCodec(Charset charset)` Constructor which allows for the selection of a default charset.
    `QuotedPrintableCodec(Charset charset, boolean strict)` Constructor which allows for the selection of a default charset and strict mode.
    `QuotedPrintableCodec(String charsetName)` Constructor which allows for the selection of a default charset.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `decode(byte[] bytes)` Decodes an array of quoted-printable characters into an array of original bytes.
    `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 using the default string charset.
    `String` | `decode(String str, Charset charset)` Decodes a quoted-printable string into its original form using the specified string charset.
    `String` | `decode(String str, String charset)` Decodes a quoted-printable string into its original form using the specified string charset.
    `static byte[]` | `decodeQuotedPrintable(byte[] bytes)` Decodes an array quoted-printable characters into an array of original bytes.
    `byte[]` | `encode(byte[] bytes)` Encodes an array of bytes into an array of quoted-printable 7-bit characters.
    `Object` | `encode(Object obj)` Encodes an object into its quoted-printable safe form.
    `String` | `encode(String str)` Encodes a string into its quoted-printable form using the default string charset.
    `String` | `encode(String str, Charset charset)` Encodes a string into its quoted-printable form using the specified charset.
    `String` | `encode(String str, String charset)` Encodes a string into its quoted-printable form using the specified charset.
    `private static int` | `encodeByte(int b, boolean encode, ByteArrayOutputStream buffer)` Write a byte to the buffer.
    `static byte[]` | `encodeQuotedPrintable(BitSet printable, byte[] bytes)` Encodes an array of bytes into an array of quoted-printable 7-bit characters.
    `static byte[]` | `encodeQuotedPrintable(BitSet printable, byte[] bytes, boolean strict)` Encodes an array of bytes into an array of quoted-printable 7-bit characters.
    `private static int` | `encodeQuotedPrintable(int b, ByteArrayOutputStream buffer)` Encodes byte into its quoted-printable representation.
    `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.
    `private static int` | `getUnsignedOctet(int index, byte[] bytes)` Return the byte at position `index` of the byte array and make sure it is unsigned.
    `private static boolean` | `isWhitespace(int b)` Checks whether the given byte is whitespace.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### charset

          private final Charset charset

      The default charset used for string decoding and encoding.

    - #### strict

          private final boolean strict

      Indicates whether soft line breaks shall be used during encoding (rule #3-5).

    - #### PRINTABLE_CHARS

          private static final BitSet PRINTABLE_CHARS

      BitSet of printable characters as defined in RFC 1521.

    - #### ESCAPE_CHAR

          private static final byte ESCAPE_CHAR

      See Also:
        Constant Field Values

    - #### TAB

          private static final byte TAB

      See Also:
        Constant Field Values

    - #### SPACE

          private static final byte SPACE

      See Also:
        Constant Field Values

    - #### CR

          private static final byte CR

      See Also:
        Constant Field Values

    - #### LF

          private static final byte LF

      See Also:
        Constant Field Values

    - #### SAFE_LENGTH

          private static final int SAFE_LENGTH

      Safe line length for quoted printable encoded text.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### QuotedPrintableCodec

          public QuotedPrintableCodec()

      Default constructor, assumes default charset of `Charsets.UTF_8`

    - #### QuotedPrintableCodec

          public QuotedPrintableCodec(boolean strict)

      Constructor which allows for the selection of the strict mode.
      Parameters:
        `strict` - if `true`, soft line breaks will be used
      Since:
        1.10

    - #### QuotedPrintableCodec

          public QuotedPrintableCodec(Charset charset)

      Constructor which allows for the selection of a default charset.
      Parameters:
        `charset` - the default string charset to use.
      Since:
        1.7

    - #### QuotedPrintableCodec

          public QuotedPrintableCodec(Charset charset,
                              boolean strict)

      Constructor which allows for the selection of a default charset and strict mode.
      Parameters:
        `charset` - the default string charset to use.
        `strict` - if `true`, soft line breaks will be used
      Since:
        1.10

    - #### QuotedPrintableCodec

          public QuotedPrintableCodec(String charsetName)
                               throws IllegalCharsetNameException,
                                      IllegalArgumentException,
                                      UnsupportedCharsetException

      Constructor which allows for the selection of a default charset.
      Parameters:
        `charsetName` - the default string charset to use.
      Throws:
        `UnsupportedCharsetException` - If no support for the named charset is available in this instance of the Java virtual machine
        `IllegalArgumentException` - If the given charsetName is null
        `IllegalCharsetNameException` - If the given charset name is illegal
      Since:
        1.7 throws UnsupportedCharsetException if the named charset is unavailable

  - ### Method Detail

    - #### encodeQuotedPrintable

          private static final int encodeQuotedPrintable(int b,
                                  ByteArrayOutputStream buffer)

      Encodes byte into its quoted-printable representation.
      Parameters:
        `b` - byte to encode
        `buffer` - the buffer to write to
      Returns:
        The number of bytes written to the `buffer`

    - #### getUnsignedOctet

          private static int getUnsignedOctet(int index,
                             byte[] bytes)

      Return the byte at position `index` of the byte array and make sure it is unsigned.
      Parameters:
        `index` - position in the array
        `bytes` - the byte array
      Returns:
        the unsigned octet at position `index` from the array

    - #### encodeByte

          private static int encodeByte(int b,
                       boolean encode,
                       ByteArrayOutputStream buffer)

      Write a byte to the buffer.
      Parameters:
        `b` - byte to write
        `encode` - indicates whether the octet shall be encoded
        `buffer` - the buffer to write to
      Returns:
        the number of bytes that have been written to the buffer

    - #### isWhitespace

          private static boolean isWhitespace(int b)

      Checks whether the given byte is whitespace.
      Parameters:
        `b` - byte to be checked
      Returns:
        `true` if the byte is either a space or tab character

    - #### encodeQuotedPrintable

          public static final byte[] encodeQuotedPrintable(BitSet printable,
                                     byte[] bytes)

      Encodes an array of bytes into an array of quoted-printable 7-bit characters. Unsafe characters are escaped.

      This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Parameters:
        `printable` - bitset of characters deemed quoted-printable
        `bytes` - array of bytes to be encoded
      Returns:
        array of bytes containing quoted-printable data

    - #### encodeQuotedPrintable

          public static final byte[] encodeQuotedPrintable(BitSet printable,
                                     byte[] bytes,
                                     boolean strict)

      Encodes an array of bytes into an array of quoted-printable 7-bit characters. Unsafe characters are escaped.

      Depending on the selection of the `strict` parameter, this function either implements the full ruleset or only a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Parameters:
        `printable` - bitset of characters deemed quoted-printable
        `bytes` - array of bytes to be encoded
        `strict` - if `true` the full ruleset is used, otherwise only rule #1 and rule #2
      Returns:
        array of bytes containing quoted-printable data
      Since:
        1.10

    - #### decodeQuotedPrintable

          public static final byte[] decodeQuotedPrintable(byte[] bytes)
                                                    throws DecoderException

      Decodes an array quoted-printable characters into an array of original bytes. Escaped characters are converted back to their original representation.

      This function fully implements the quoted-printable encoding specification (rule #1 through rule #5) as defined in RFC 1521.

      Parameters:
        `bytes` - array of quoted-printable characters
      Returns:
        array of original bytes
      Throws:
        `DecoderException` - Thrown if quoted-printable decoding is unsuccessful

    - #### encode

          public byte[] encode(byte[] bytes)

      Encodes an array of bytes into an array of quoted-printable 7-bit characters. Unsafe characters are escaped.

      Depending on the selection of the `strict` parameter, this function either implements the full ruleset or only a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Specified by:
        `encode` in interface `BinaryEncoder`
      Parameters:
        `bytes` - array of bytes to be encoded
      Returns:
        array of bytes containing quoted-printable data

    - #### decode

          public byte[] decode(byte[] bytes)
                        throws DecoderException

      Decodes an array of quoted-printable characters into an array of original bytes. Escaped characters are converted back to their original representation.

      This function fully implements the quoted-printable encoding specification (rule #1 through rule #5) as defined in RFC 1521.

      Specified by:
        `decode` in interface `BinaryDecoder`
      Parameters:
        `bytes` - array of quoted-printable characters
      Returns:
        array of original bytes
      Throws:
        `DecoderException` - Thrown if quoted-printable decoding is unsuccessful

    - #### encode

          public String encode(String str)
                        throws EncoderException

      Encodes a string into its quoted-printable form using the default string charset. Unsafe characters are escaped.

      Depending on the selection of the `strict` parameter, this function either implements the full ruleset or only a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Specified by:
        `encode` in interface `StringEncoder`
      Parameters:
        `str` - string to convert to quoted-printable form
      Returns:
        quoted-printable string
      Throws:
        `EncoderException` - Thrown if quoted-printable encoding is unsuccessful
      See Also:
        `getCharset()`

    - #### decode

          public String decode(String str,
                      Charset charset)
                        throws DecoderException

      Decodes a quoted-printable string into its original form using the specified string charset. Escaped characters are converted back to their original representation.
      Parameters:
        `str` - quoted-printable string to convert into its original form
        `charset` - the original string charset
      Returns:
        original string
      Throws:
        `DecoderException` - Thrown if quoted-printable decoding is unsuccessful
      Since:
        1.7

    - #### decode

          public String decode(String str,
                      String charset)
                        throws DecoderException,
                               UnsupportedEncodingException

      Decodes a quoted-printable string into its original form using the specified string charset. Escaped characters are converted back to their original representation.
      Parameters:
        `str` - quoted-printable string to convert into its original form
        `charset` - the original string charset
      Returns:
        original string
      Throws:
        `DecoderException` - Thrown if quoted-printable decoding is unsuccessful
        `UnsupportedEncodingException` - Thrown if charset is not supported

    - #### decode

          public String decode(String str)
                        throws DecoderException

      Decodes a quoted-printable string into its original form using the default string charset. 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` - Thrown if quoted-printable decoding is unsuccessful. Thrown if charset is not supported.
      See Also:
        `getCharset()`

    - #### encode

          public Object encode(Object obj)
                        throws EncoderException

      Encodes an object into its quoted-printable safe form. Unsafe characters are escaped.
      Specified by:
        `encode` in interface `Encoder`
      Parameters:
        `obj` - string to convert to a quoted-printable form
      Returns:
        quoted-printable object
      Throws:
        `EncoderException` - Thrown if quoted-printable encoding is not applicable to objects of this type or if encoding is unsuccessful

    - #### 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` or `byte[]`. Thrown if a failure condition is encountered during the decode process.

    - #### 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

    - #### encode

          public String encode(String str,
                      Charset charset)

      Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.

      Depending on the selection of the `strict` parameter, this function either implements the full ruleset or only a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Parameters:
        `str` - string to convert to quoted-printable form
        `charset` - the charset for str
      Returns:
        quoted-printable string
      Since:
        1.7

    - #### encode

          public String encode(String str,
                      String charset)
                        throws UnsupportedEncodingException

      Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.

      Depending on the selection of the `strict` parameter, this function either implements the full ruleset or only a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in RFC 1521 and is suitable for encoding binary data and unformatted text.

      Parameters:
        `str` - string to convert to quoted-printable form
        `charset` - the charset for str
      Returns:
        quoted-printable string
      Throws:
        `UnsupportedEncodingException` - Thrown if the charset is not supported

commons-codec version 1.10 - Copyright © 2002-2016 - Apache Software Foundation