Base64:バイナリデータを文字にする
メール、JSON、HTMLの属性など、テキストしか扱えない場所があります。Base64はどんなデータも64種類の安全な文字(A–Z、a–z、0–9、+、/)に変換し、そのまま通せるようにします。「Hello」はSGVsbG8=になります。
- 3バイトごとに4文字になるので、Base64は元より約33%大きくなります。
- 末尾の=は、出力を4文字の倍数にそろえるための埋め草です。
- URLセーフ版は、Webアドレスで特別な意味を持つ+と/の代わりに-と_を使います。
暗号化ではない
Base64は鍵がなく、誰でもデコードできます。パスワードなどの秘密を隠す目的には絶対に使わないでください。
データURI
小さな画像は、data:image/png;base64,のあとにBase64の文字列を続けて、HTMLやCSSに直接書き込めます。別のダウンロードが不要になりますが、サイズが大きくなるので小さなアイコン向きです。画像をBase64にでデータURIを作れるほか、データURIを画像に戻すこともできます。
URLエンコードは別物
URLエンコード(パーセントエンコード)は、Webアドレスで使えない文字や特別な意味を持つ文字だけを、%とそのバイト値に置き換えます。「café & crème」はcaf%C3%A9%20%26%20cr%C3%A8meになります。空白は%20、&は%26、UTF-8で2バイトのéは%C3%A9で、それ以外は読めるまま残ります。日本語の文字も同じようにUTF-8のバイトごとに%付きの形になります。
テキストのエンコードとデコードはBase64エンコード・デコードとURLエンコード・デコードでできます。