Base64 エンコード / デコード
中国語も emoji も文字化けしません——内部では UTF-8 として扱います。内容はブラウザ内でのみ処理されます。
多くのオンラインツールは btoa() 文字列を直接処理するため、中国語が入るとエラーになったり文字化けしたりします。ここではまず TextEncoder UTF-8 バイトに変換してからエンコードし、デコード時に元に戻します。
使う場面
- 中国語や絵文字を含むテキストを、ASCII しか受け付けない HTTP ヘッダーや設定値に埋め込みたいとき。
- 受け取った Base64 文字列が UTF-8 のテキストとして読めるのか、それとも文字化けするのかを確かめたいとき。
使わないほうがよい場面
- 画像・PDF・ZIP などのバイナリファイルを変換したいとき。本ツールはテキスト専用で、バイナリのバイト列はそのまま保持できないため、base64 コマンドやファイル対応のツールを使ってください。
- パスワードやトークンを暗号化・隠蔽したいとき。Base64 は暗号化ではなくエンコードなので、受け取った人は誰でも復元できます。
エンコードとデコードはブラウザ内で完結し、入力は送信も保存もされません。制限:テキスト専用で、ファイルやバイナリの変換には対応しません。デコードは UTF-8 として解釈するため、UTF-8 でないバイト列は � に置き換わります。空白は無視しますが、Base64 の文字以外が含まれるとエラーになります。出力は UTF-8 のバイト数の約 4/3 になります。
よくある質問
他のツールで中国語が文字化けするのはなぜですか?
多くのツールは JavaScript の文字列をそのまま btoa() に渡します。btoa() は 0–255 のバイナリ文字列しか受け付けないため、中国語では InvalidCharacterError が発生します。UTF-8 を経由しない回避策では、受け取る側で元に戻せず文字化けします。本ツールは先に TextEncoder で UTF-8 のバイト列に変換し、そのバイト列を btoa() でエンコードします。デコード時は TextDecoder で逆変換するため、中国語や絵文字もそのまま往復できます。
Base64 にするとどれくらい大きくなりますか?
約 33% 増えます。3 バイトが 4 つの ASCII 文字になるので、長さは元の 4/3 になり、3 で割り切れない場合は末尾に 1〜2 個の = が付きます。UTF-8 では漢字 1 文字が 3 バイトで約 4 文字、絵文字は通常 4 バイトで、パディングを含めて約 8 文字になります。
画像や PDF もエンコードできますか?
できません。本ツールはテキストのみを扱います。エンコード時は TextEncoder が入力を UTF-8 テキストとして解釈するため、バイナリファイルのバイト列は保持されません。デコード時も UTF-8 として無効なバイトは �(U+FFFD)に置き換わり、元のファイルは壊れます。ファイルの変換には macOS/Linux の base64 コマンドや Windows の certutil、バイナリ対応のツールを使ってください。