URLエンコード 【URL encoding】 パーセントエンコーディング / percent encoding / HTMLエンコード / URIエンコード / URI encoding
概要
URLエンコード(URL encoding)とは、URLのファイル名やクエリ文字列などの一部としては使用できない記号や文字を、使用できる文字の特殊な組み合わせによって表記する変換規則。「%」と文字コードの16進数表記を繋げたものに置き換えるといった変換を行う。URL(Uniform Resource Locator)はインターネット上での資源(情報やサービスなど)の所在情報を書き表すための表記法の標準で、Webページの場所を指し示す際などに利用される。HTTPの場合は「http:」あるいは「https:」に続けて「//WebサーバのIPアドレスまたはドメイン名/サーバ内のパス」という形式になる。
URLの表記規則では、いわゆるASCII文字(日本では半角英数字・記号文字にほぼ相当)における制御文字や一部の記号(空白文字と " # < > ` { } の8つ)については、ディレクトリ名やファイル名などを指定するパス部分に使うことができず、URLエンコードされた表記に改める必要がある。
表記できない文字は、その文字コードを16進数で表したものを「%」(パーセント記号)に続けて表記して置き換える。例えば、半角シャープ「#」は「%23」、半角スペース「 」は「%20」となる。URLパラメータ(「?」以降)では、これに加えて大半の記号文字も変換される。
多バイト文字コードの扱い
日本語などでは文字コードの種類によって同じ文字でもURLエンコードの表記が異なる。例えば、「あ」はShift JISコードで「82A0」(16進数表記)であるため「%82%A0」となるが、UTF-8では「E38182」(同)であるため「%E3%81%82」となる。
また、この変換はバイト単位で行なうため、多バイト文字コードの2バイト目が半角アルファベットや数字などに相当する場合は、パーセント表記ではなくその文字自体を記す。例えば、「ア」はShift JISで「8341」であるため、「41」の部分がASCIIコードの「A」に相当し、「%83A」と表記される。
application/x-www-form-urlencoded
一方、HTTPのPOSTメソッドでデータを送信する場合などには、MIMEタイプの「application/x-www-form-urlencoded」で定められた方式で文字を符号化するが、これを指してURLエンコードという場合がある。
「英数字などはそのまま記し、記号や非ASCII文字などは『%』+コード番号で表す」という基本的な考え方は同じだが、パーセント表記に置き換えなくて良い記号が「* - . _」の4つであることや、半角スペースを「%20」ではなく「+」で表す点が異なる。