Base64Variants
Date: 2016-12-03

com.fasterxml.jackson.core

## Class Base64Variants

- java.lang.Object
- - com.fasterxml.jackson.core.Base64Variants

-     public final class Base64Variants
      extends java.lang.Object

  Container for commonly used Base64 variants:
  - `MIME`
  - `MIME_NO_LINEFEEDS`
  - `PEM`
  - `MODIFIED_FOR_URL`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Base64Variant` | `MIME` This variant is what most people would think of "the standard" Base64 encoding.
    `static Base64Variant` | `MIME_NO_LINEFEEDS` Slightly non-standard modification of `MIME` which does not use linefeeds (max line length set to infinite).
    `static Base64Variant` | `MODIFIED_FOR_URL` This non-standard variant is usually used when encoded data needs to be passed via URLs (such as part of GET request).
    `static Base64Variant` | `PEM` This variant is the one that predates `MIME`: it is otherwise identical, except that it mandates shorter line length.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Base64Variants()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Base64Variant` | `getDefaultVariant()` Method used to get the default variant ("MIME_NO_LINEFEEDS") for cases where caller does not explicitly specify the variant.
    `static Base64Variant` | `valueOf(java.lang.String name)`

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

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

- - ### Field Detail

    - #### MIME

          public static final Base64Variant MIME

      This variant is what most people would think of "the standard" Base64 encoding.

      See wikipedia Base64 entry for details.

      Note that although this can be thought of as the standard variant, it is not the default for Jackson: no-linefeeds alternative is because of JSON requirement of escaping all linefeeds.

    - #### MIME_NO_LINEFEEDS

          public static final Base64Variant MIME_NO_LINEFEEDS

      Slightly non-standard modification of `MIME` which does not use linefeeds (max line length set to infinite). Useful when linefeeds wouldn't work well (possibly in attributes), or for minor space savings (save 1 linefeed per 76 data chars, ie. ~1.4% savings).

    - #### PEM

          public static final Base64Variant PEM

      This variant is the one that predates `MIME`: it is otherwise identical, except that it mandates shorter line length.

    - #### MODIFIED_FOR_URL

          public static final Base64Variant MODIFIED_FOR_URL

      This non-standard variant is usually used when encoded data needs to be passed via URLs (such as part of GET request). It differs from the base `MIME` variant in multiple ways. First, no padding is used: this also means that it generally can not be written in multiple separate but adjacent chunks (which would not be the usual use case in any case). Also, no linefeeds are used (max line length set to infinite). And finally, two characters (plus and slash) that would need quoting in URLs are replaced with more optimal alternatives (hyphen and underscore, respectively).

  - ### Constructor Detail

    - #### Base64Variants

          public Base64Variants()

  - ### Method Detail

    - #### getDefaultVariant

          public static Base64Variant getDefaultVariant()

      Method used to get the default variant ("MIME_NO_LINEFEEDS") for cases where caller does not explicitly specify the variant. We will prefer no-linefeed version because linefeeds in JSON values must be escaped, making linefeed-containing variants sub-optimal.

    - #### valueOf

          public static Base64Variant valueOf(java.lang.String name)
                                       throws java.lang.IllegalArgumentException

      Throws:
        `java.lang.IllegalArgumentException`
      Since:
        2.1