Base64

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。具体的には、A、…、Z、a、…、z、0、…、9 の62種類の文字と、2種類の記号 (+、/)、さらにパディング（余った部分を詰める）のための記号として = が用いられる。この変換によって、データ量は4/3（約133%）となり、増加する。また、MIMEの基準では76文字ごとに改行コードが入るため、この分の2バイトを計算に入れるとデータ量は約137%となる。

変換形式 
Base64変換の手順を以下に挙げる。

元データを6ビットずつに分割する。（6ビットに満たない分は後ろに0を追加して6ビットにする）
各6ビットの値を変換表を使って4文字ずつ変換する。
4文字に足りない分は = 記号を後ろに追加する。

変換例

変換表 
6ビットのビット列に対して一つの文字を対応づけているだけである。

主な利用例

電子メール 
電子メールでは、SMTPなどの制約により、7ビット文字列以外をやり取りすることは出来ない。このため、添付ファイルなどのバイナリ形式のデータを送信する際に標準的に利用されている。

Basic認証 
HTTPヘッダでは、特殊記号を使用することが出来ないため、ユーザー名とパスワードをコロン (:) で区切ってBase64エンコードした文字列がBasic認証に用いられている。

電子掲示板 
インターネット上の電子掲示板では、文字列以外のバイナリデータの書き込みは基本的に不可能である。そこで、画像やテキスト文章を圧縮したファイルなどをやり取りするために、この形式が使用されることがある。

問題点 
このエンコードを行うとデータ量が大きく増加するため、特に大きなファイルの送受信などをする場合は、電子メール以外の手段を利用したほうが格段に速い場合がある。また、英文の中に特殊文字が混じっているテキスト文章などは、特殊文字だけをエンコードした方がデータ効率が良く、デコードを行わなくても大体のデータが読めると言う利点がある。（Quoted-printable参照）

変形版 
URLにBase64を含ませると、+ と / が問題を引き起こすことがある。これらの文字がURLで特別な意味を持つために %h1h0の形にエスケープする必要が生じるためである。
他にも、+ と / が特別な意味をもつ個所（正規表現など）やその使用が制限される個所（XMLなど）でBase64を用いるときには、この2文字のかわりに !、-、. などを用いることがある。

脚注

関連項目 
URLエンコード
uuencode
BinHex
ish
 二進法
 四進法
 八進法
 十六進法
 Base32

外部リンク 
 The Base16, Base32, and Base64 Data Encodings - IETFによる規格書（英語）。RFC 3548。
 ベース64とベース32とベース16コード化 - 上記の参考和訳。
 The Base16, Base32, and Base64 Data Encodings - IETFによる規格書（英語）。RFC 4648。
 ベース64とベース32とベース16コード化 - 上記の参考和訳。
Base64 Encoding in Go

電子メールのプロトコル
ネットニュース
インターネット標準
データシリアライゼーションフォーマット