使う場面
Base64 変換は、文字列をそのまま渡せない場所に、文字列を埋め込むときに使います。たとえば、URL の一部に文字列を入れたいときです。設定ファイルや通信の記録に出てきた Base64 の中身を読みたいときにも使います。Base64 は暗号化ではありません。
使い方
- 「変換の向き」で、「エンコード(文字列 → Base64)」か「デコード(Base64 → 文字列)」を選びます。
- 入力欄に文字列を入れます。エンコードのときの入力欄の名前は「変換する文字列」、デコードのときは「変換する Base64」に変わります。最初は「こんにちは」が入っています。
- 入力するたびに、「結果」の欄に変換した内容が出ます。押すボタンはありません。
- URL の中に入れる場合は、エンコードの向きで「URL で使える形にする」にチェックを入れます。
- 「結果をコピー」で結果をコピーします。結果が空のときは、コピーせずに「コピーする結果がありません」と表示します。
- 「結果を入力に移す」を押すと、結果が入力欄に入り、変換の向きが逆になります。エンコードした結果をデコードして確かめるときに使えます。
変換のしかた
日本語の UTF-8 への変換
Base64 は、文字ではなくバイトの並びを変換する方式です。このツールは、入力した文字列を UTF-8 のバイトの並びにしてから変換します。日本語のふだん使うひらがなや漢字は 1 文字が 3 バイトなので、「こんにちは」の 5 文字は 15 バイトになります。
Base64 では、3 バイトを 4 文字に書き換えます。15 バイトは 5 組の 3 バイトなので、4 文字ずつ 5 組で 20 文字の「44GT44KT44Gr44Gh44Gv」になります。バイト数が 3 で割り切れないときは、末尾の「=」で長さをそろえます。たとえば「Hi」は 2 バイトで、「SGk=」になります。
Base64 に使う文字は、英大文字・英小文字・数字・「+」「/」の 64 種類で、これは RFC 4648 で決められています。
URL セーフな形
通常の Base64 の「+」と「/」は、URL の中では別の意味で使われることがあります。「URL で使える形にする」にチェックを入れると、「+」を「-」に、「/」を「_」に置き換え、末尾の「=」を付けずに出力します。「???>>>」は、通常は「Pz8/Pj4+」、URL で使える形では「Pz8_Pj4-」です。この形は、URL セーフと呼ばれることもあります。
デコードの受け付ける形
デコードでは、空白と改行を無視して読みます。通常の形と URL で使える形のどちらも受け付け、末尾の「=」がなくても読み取ります。このため、デコードの向きでは、チェックボックスは選べません。
次の場合は、エラーを表示します。結果の欄は空になります。
- Base64 に使えない文字がある。何文字目かを表示します。
- 「=」が末尾以外にある。
- 文字数が 4 で割って 1 余る。途中が欠けている可能性があります。
- デコードした結果が、UTF-8 の文字として読めない。
デコードした結果は、UTF-8 の文字列として読めるものだけを出します。画像などの文字ではないデータの Base64 は、多くの場合、4 つ目のエラーになり、読み取れません。
入力の扱い
入力した内容は、この端末のブラウザの中だけで変換します。サーバーには送りません。保存もしないので、ページを閉じると消えます。結果の欄の内容も同じです。「結果をコピー」を押したときだけ、結果がクリップボードに入ります。
よくある質問
Base64 変換で、日本語の文字列は正しく変換できますか。
できます。日本語は UTF-8 のバイトの並びにしてから Base64 にします。「こんにちは」は「44GT44KT44Gr44Gh44Gv」になり、デコードすると元の文字列に戻ります。Base64 を使う相手側も UTF-8 として読む必要があります。
URL セーフとは何ですか。
通常の Base64 に出てくる「+」と「/」は、URL の中では別の意味で使われるため、「-」と「_」に置き換えた形です。末尾の「=」も付けません。画面では「URL で使える形にする」にチェックを入れると、この形で出力します。
デコードのとき、URL セーフの形と通常の形を選ぶ必要はありますか。
ありません。デコードは、どちらの形も受け付けます。末尾の「=」が欠けていても読み取り、空白や改行は無視します。このため、デコードの向きでは「URL で使える形にする」のチェックは操作できなくなります。
画像ファイルの Base64 をデコードすると、どうなりますか。
文字として読めないため、エラーを表示します。このツールは、文字列を文字列に戻す用途に限った変換で、デコードした結果は UTF-8 の文字列として読めるものだけを出します。画像のようなデータは変換できません。
Base64 は暗号化ですか。
暗号化ではありません。Base64 は、バイトの並びを決まった 64 種類の文字で書き表す方式で、鍵が要らず、誰でも元に戻せます。パスワードなど、他人に見せたくない内容を隠す目的には使えません。
