このモジュールは任意のバイナリ文字列を(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'
とエンコードされます。
このモジュールは、 RFC 3548 で定められた仕様による データの符号化 (エンコード、encoding) および復元 (デコード、decoding) を 提供します。この RFC 標準では Base16, Base32 および Base64 が 定義されており、これはバイナリ文字列とテキスト文字列とをエンコードあるいは デコードするためのアルゴリズムです。変換されたテキスト文字列は email で確実に 送信したり、URL の一部として使用したり、HTTP POST リクエストの一部に 含めることができます。これらの符号化アルゴリズムは uuencode で 使われているものとは別物です。
このモジュールでは 2つのインターフェイスが提供されています。 現代的なインターフェイスは、これら 3種類のアルファベット集合を使った 文字列オブジェクトのエンコードおよびデコードをすべてサポートします。 一方、レガシーなインターフェイスは、文字列とともにファイル風のオブジェクトに対する エンコード / デコードを提供しますが、Base64 標準のアルファベット集合しか 使いません。
現代的なインターフェイスは以下のものを提供します:
s[, altchars]) |
s はエンコードする文字列です。オプション引数 altchars は
最低でも 2 の長さをもつ文字列で (これ以降の文字は無視されます)、
これは +
と /
の代わりに使われる代替アルファベットを指定します。
これにより、アプリケーションはたとえば URL やファイルシステムの影響をうけない
Base64 文字列を生成することができます。デフォルトの値は None
で、
これは標準の Base64 アルファベット集合が使われることを意味します。
エンコードされた文字列が返されます。
s[, altchars]) |
s にはデコードする文字列を渡します。オプション引数の altchars は
最低でも 2 の長さをもつ文字列で (これ以降の文字は無視されます)、
これは +
と /
の代わりに使われる代替アルファベットを指定します。
デコードされた文字列が返されます。s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
s) |
s) |
s) |
+
のかわりに -
を使い、
/
のかわりに _
を使用します。
s) |
+
のかわりに -
を使い、
/
のかわりに _
を使用します。
s) |
s[, casefold[, map01]]) |
s にはエンコードする文字列を渡します。オプション引数 casefold は
小文字のアルファベットを受けつけるかどうかを指定します。
セキュリティ上の理由により、デフォルトではこれは False
になっています。
RFC 3548 は付加的なマッピングとして、数字の 0 (零) を
アルファベットの O (オー) に、数字の 1 (壱) をアルファベットの I (アイ) または L (エル) に
対応させることを許しています。オプション引数は map01 は、
None
でないときは、数字の 1 をどの文字に対応づけるかを指定します
(map01 が None
でないとき、数字の 0 はつねにアルファベットの O (オー) に対応づけられます)。
セキュリティ上の理由により、これはデフォルトでは None
になっているため、
0 および 1 は入力として許可されていません。
デコードされた文字列が返されます。s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
s) |
s にはエンコードする文字列を渡し、エンコードされた文字列が返されます。
s[, casefold]) |
s にはエンコードする文字列を渡します。オプション引数 casefold は
小文字のアルファベットを受けつけるかどうかを指定します。
セキュリティ上の理由により、デフォルトではこれは False
になっています。
デコードされた文字列が返されます。s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
レガシーなインターフェイスは以下のものを提供します:
input, output) |
input.read()
が空文字列を返すまで読まれます。
s) |
input, output) |
input.read()
が空文字列を返すまで読まれます。
encode()はエンコードされたデータと改行文字('\n'
)を出
力します。
s) |
'\n'
)を出力します。
モジュールの使用例:
>>> import base64 >>> encoded = base64.b64encode('data to be encoded') >>> encoded 'ZGF0YSB0byBiZSBlbmNvZGVk' >>> data = base64.b64decode(encoded) >>> data 'data to be encoded'
参考: