URLエンコード(パーセントエンコーディング)とは
URLには使える文字が限られているため、日本語やスペース、記号は%E6%9D%B1のような%+16進数の形式に変換して埋め込みます。これがURLエンコード(パーセントエンコーディング)です。日本語は通常UTF-8のバイト列としてエンコードされるため、漢字1文字が%XX×3個(9文字)になります。
encodeURIComponent と encodeURI の使い分け
| encodeURIComponent | encodeURI | |
|---|---|---|
| 用途 | パラメータの値1つを変換 | URL全体を変換 |
/ ? & = # | 変換する | 残す |
| 典型的な使い所 | ?q=に渡す検索語 | 日本語を含むURL全体 |
検索キーワードをクエリに埋め込むのにencodeURIを使うと、キーワード内の&がパラメータ区切りと解釈されて値が壊れます。値を作るときは必ずComponent側、と覚えてください。
「+」とスペースの罠
HTMLフォームの送信形式(application/x-www-form-urlencoded)では、スペースは%20ではなく+に変換されます。一方decodeURIComponentは+をスペースに戻しません。フォーム由来のデータやアクセスログのクエリ文字列をデコードするときは、このツールの「+をスペースに変換」オプションを有効にしてください。