# 12.12 `base64` -- MIME base64 形式データのエンコードおよびデコード

このモジュールは任意のバイナリ文字列を(eメールやHTTPのPOSTリクエストの一 部としてで安全に送ることのできるテキスト文字列に変換する)base64形式へエンコー ドおよびデコードする機能を提供します。 エンコードの概要はRFC 1521(MIME(Multipurpose Internet Mail Extensions)Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies, section 5.2, ``Base64 Content-Transfer-Encoding'')で定義されていて、 MIME形式のeメールやインターネットのさまざまな場面で利用されています。 この形式はuuencodeプログラムによる出力とは違うものです。 たとえば、`'www.python.org'`は、 `'d3d3LnB5dGhvbi5vcmc=\n'`とエンコードされます。

`decode`( | input, output)

  inputの中身をデコードした結果をoutputに出力します。 input、outputともにファイルオブジェクトか、ファイルオブジェ クトと同じインターフェースを持ったオブジェクトである必要があります。 inputは%codeinput.read()が空文字列を返すまで読まれます。

`decodestring`( | s)

  文字列sをデコードして結果のバイナリデータを返します。 sには一行以上のbase64形式でエンコードされたデータが含まれている必 要があります。

`encode`( | input, output)

  inputの中身をbase64形式でエンコードした結果をoutputに出力します。 input、outputともにファイルオブジェクトか、ファイルオブジェ クトと同じインターフェースを持ったオブジェクトである必要があります。 inputは%codeinput.read()が空文字列を返すまで読まれます。 `encode()`はエンコードされたデータと改行文字(`'\n'`)を出 力します。

`encodestring`( | s)

  文字列s(任意のバイナリデータを含むことができます)を base64形式でエンコードした結果の(1行以上の文字列)データを返します。 `encodestring()`はエンコードされた一行以上のデータと改行文字 (`'\n'`)を出力します。

参考資料:

`binascii`モジュール:
  ASCII からバイナリへ、バイナリからASCIIへの 変換をサポートするモジュール。.

RFC 1521, MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies
  Section 5.2, ``Base64 Content-Transfer-Encoding,'' provides the definition of the base64 encoding.