URL をエンコード・デコードする方法

· 3 分で読めます

URL の中でスペースがあるべき場所に %20 が見えたり、アクセント付き文字があるべき場所に %C3%A9 が見えたりしたことがあれば、それが URL エンコーディングです。Web の基本的な仕組みのひとつで、これを理解しているとリンク切れ、API の問題、フォーム送信のデバッグに役立ちます。

URL エンコーディングが行うこと

URL に含めることができるのは、限られた安全な文字だけです:アルファベット(A〜Z、a〜z)、数字(0〜9)、いくつかの特殊文字(-、_、.、~)。それ以外 — スペース、アクセント文字、絵文字、&、=、#、? のような記号 — は安全な形式に変換する必要があります。

URL エンコーディング(パーセントエンコーディングとも)は、安全でない文字を % とそのバイトの 16 進数値に置き換えます:

文字 エンコード後
スペース %20
& %26
= %3D
# %23
? %3F
/ %2F
@ %40

URL エンコーディングが必要なとき

エンコード・デコードの方法

  1. エンコードかデコードを選ぶ — 方向を選択します。クエリパラメータには encodeURIComponent、URL 全体には encodeURI を使ってください。
  2. 入力を貼り付ける — テキストや URL を入力します。結果はその場で更新されます。
  3. 結果をコピー — コード、API リクエスト、ブラウザで使用してください。

ヒント

よくある質問

encodeURI と encodeURIComponent の違いは何ですか?

encodeURI は URL 構造内の有効な文字(スラッシュ、コロン、クエスチョンマーク)を保持します。encodeURIComponent は文字、数字、いくつかの安全な文字以外をすべてエンコードします。クエリパラメータの値には encodeURIComponent、URL 全体には encodeURI を使ってください。

なぜスペースが %20 になったり + になったりするのですか?

URL エンコーディングではスペースは %20 になります。フォームデータ(application/x-www-form-urlencoded)ではスペースは + になります。それぞれの文脈ではどちらも有効ですが、%20 は URL の汎用的な標準です。

URL を手動でエンコードする必要がありますか?

ほとんどの場合、使用言語やフレームワークが自動的にエンコードしてくれます。手動エンコードが役立つのは、URL を手作業で組み立てるとき、API リクエストをデバッグするとき、特殊文字を含むクエリ文字列を扱うときです。

データはサーバーに送信されますか?

いいえ。すべてのエンコードとデコードはブラウザ内で行われます。