Web開発やメール、API連携をしていると
URLエンコード, Base64, Quoted-Printable
といった「文字列エンコード」を比較
1. URLエンコード(Percent Encoding)
概要
URLエンコードは、URLで使えない文字や意味を持つ文字を
% + 16進数で表現する仕組みです。
URLは仕様上、使える文字が限られており
日本語・スペース・記号などはそのままでは使えません。
そこで登場するのが URL エンコードです。
https://mjeld.com/url-encode-decode/
文字列の例
# 元の文字列
こんにちは 世界!
# URLエンコード後(UTF-8)
%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C%21
特徴
- %XX 形式(16進数)
- UTF-8 バイト列を1バイトずつ変換
- URL・クエリパラメータ・フォーム送信で必須
- クエリパラメータ
?keyword=%E6%A4%9C%E7%B4%A2
- GETリクエスト
- フォーム送信(application/x-www-form-urlencoded)
2. Base64
概要
Base64は、
バイナリデータを英数字だけの文字列に変換する方式です。
本来は文字列ではない「画像・音声・バイナリ」を
テキストしか扱えない場所で安全に運ぶために使われます。
(たまに文字列を更にBase64にするケースもみられる)
https://mjeld.com/base64/
# 元の文字列
Hello World
# Base64エンコード後
SGVsbG8gV29ybGQ=
特徴
- 使用文字:A-Z a-z 0-9 + /
- = はパディング(長さ調整)
- サイズが 約1.33倍に増える
- URL安全ではない(+ / = が含まれる)
主な用途
- 画像の埋め込み(Data URL)
- APIでのバイナリ送信
- 認証情報(Basic認証)
Authorization: Basic dXNlcjpwYXNz
3. Quoted-Printable
概要
Quoted-Printableは
メール本文(特にテキスト)向けのエンコード方式です。
ASCII文字はそのまま残し
非ASCII文字だけを =XX 形式で変換します。
https://mjeld.com/quoted-printable/
# 元の文字列
こんにちは World
# Quoted-Printable(UTF-8)
=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF World
特徴
- ASCII文字はそのまま表示できる
- =XX 形式
- 改行制限(76文字)あり
- 人間が比較的読みやすい
主な用途
- メール本文(text/plain, text/html)
- MIMEエンコード
- メーラー互換性確保
4. 3つの方式の比較
| 項目 | URLエンコード | Base64 | Quoted-Printable |
|---|---|---|---|
| 主用途 | URL | バイナリ転送 | メール本文 |
| 表記形式 | %XX |
英数字 + +/=
|
=XX |
| 可読性 | 低 | 低 | 中 |
| サイズ増加 | 中 | 大 | 小〜中 |
| URL安全 | ◎ | × | △ |