文字列をBase64エンコードする方法
テキスト文字列をBase64エンコードする方法をステップごとに解説。複数言語でのコード例、主な用途、エンコード時のベストプラクティスを紹介します。
Encoding
詳細な説明
Base64エンコードは、任意のデータを印刷可能なASCII文字の文字列に変換します。テキスト文字列をエンコードする際、まず各文字がバイト表現に変換され、そのバイト列が3バイトずつのグループで処理されます。3バイト(24ビット)のグループは4つの6ビット値に分割され、各6ビット値がBase64アルファベット(A-Z, a-z, 0-9, +, /)の文字にマッピングされます。
ステップごとの仕組み:
- 入力文字列を取得します。例:
"Hi" - 各文字をASCIIバイト値に変換:
H = 72,i = 105 - バイナリで表記:
01001000 01101001 - 6ビット単位で分割:
010010 000110 1001。最後のチャンクが4ビットしかないため、ゼロでパディングして010010 000110 100100とします。 - 各6ビット値をBase64アルファベットにマッピング:
S,G,k - 元の入力が2バイト(3の倍数でない)なので、パディング文字
=を1つ追加し、最終結果はSGk=となります。
JavaScriptの場合:
const encoded = btoa("Hello, World!");
// Result: "SGVsbG8sIFdvcmxkIQ=="
よくある間違い: ブラウザの btoa() 関数はLatin-1文字のみを扱えます。Latin-1範囲外の文字(絵文字やCJK文字など)を含む文字列の場合、Base64エンコードの前にまずUTF-8バイトに変換する必要があります。詳しくはUnicode/UTF-8の項目を参照してください。
Base64エンコードは決定論的であり、同じ入力からは常に同じ出力が得られます。テキストベースのフォーマットにデータを埋め込む際に信頼性がありますが、圧縮や暗号化ではないことを忘れないでください。エンコード後の出力は常に入力より約33%大きくなります。
ユースケース
HTTP Basic認証ヘッダーで、ユーザー名とパスワードの組み合わせを単一のASCII文字列として送信するためにエンコードする場合に使用します。