パーセントエンコーディングの例
例えば、 URI 中で スペース の使用は許可されていない。そのため、パーセントエンコーディング を用いて、次のように表現する。パーセントエンコーディング前
https://curict.com/news list/
パーセントエンコーディング後
https://curict.com/news%20list/
パーセントエンコーディングの書式
%<0 ~ 9 または A ~ F><0 ~ 9 または A ~ F>
パーセントエンコーディングの例
%23 -> #
%3D -> =
%7B%7D -> {}
3文字1セットで、% 記号の後に、2文字の 0-9 または A-F が続く。 小文字アルファベットも使用できる場合が多いが、正確には大文字アルファベットを用いる。
数字とアルファベットは 文字コードを 16進数 で表現したもので、例えば 記号 = の 文字コードを 16進数であらわすと 3D となる。これに % 記号を付与し、%3D とする。
多バイト文字のパーセントエンコーディング
多バイト文字 の場合、文字コードを 1バイト(2桁の16進数)ごとに 分割して処理を行う。- 対象文字の文字コードを確認する。
- 文字コードを 1バイト毎に 分割する
- 分割した文字コードを 2桁の 16進数にする。
- 分割した文字コードをASIIコードを用いて、文字に変換する。
- 手順 4. で変換した文字の使用が許されている場合、その文字を採用する。
- 手順 4. で変換した文字の使用が許されていない場合、手順 3. の 16進数に % を付与する。
- あ の UTF-8での文字コードは 16進数 で 0xE38182
- 1バイトごとに分割すると、E3,81,82
- E3,81,82 は、ASCIIコードで対応する文字は無い。
- そのまま % を付与 -> %E3%81%82
- あ の SJIS での文字コードは 16進数 で 0x82A0
- 1バイトごとに分割すると、82 と A0
- 82 と A0 は、ASCIIコードで対応する文字は無い。
- そのまま % を付与 -> %82%A0
- ア の SJIS での文字コードは、0x8341
- 1バイトごとに分割すると、83 と 41
- 83は、ASCIIコードで対応する文字は無いため、%83 とする。
- 41 は ASCIIコードで A に相当するため、A を採用する。
- 結果、%83A となる。
特別な意味を持つ文字 や 使用できない文字
特別な意味を持つ文字 や 使用できない文字は、パーセントエンコーディング を行う対象によって異なる。また、特別な変換ルールを用いることもある。パーセントエンコーディング を採用する技術
URI(Uniform Resource Identifier)
URI は Uniform Resource Identifier の略で、リソースを一意に識別するための方法をルール化したもの。主にインターネット上の資源を特定する際に用いられ、URL(Uniform Resource Locator) と URN(Uniform Resource Name) から構成される。URI では次の文字が 予約語 として扱われ、特別な意味を持つ。URI に 予約語 や 多バイト文字 を含めるには、パーセントエンコーディング を行う。
文字 | 説明 | 文字コード | パーセントエンコード結果 |
---|---|---|---|
: | コロン / colon | 0x3A | %3A |
/ | スラッシュ / slash | 0x2F | %2F |
? | 疑問符 / question mark | 0x3F | %3F |
# | 番号記号 / number sign | 0x23 | %23 |
[ | 始め大括弧 / left square bracket | 0x5B | %5B |
] | 終わり大括弧 / right square bracket | 0x5D | %5D |
@ | 単価記号 / commercial at | 0x40 | %40 |
! | 感嘆符 / exclamation mark | 0x21 | %21 |
$ | ドル記号 / dollar sign | 0x24 | %24 |
& | アンパサンド / ampersand | 0x26 | %26 |
' | シングルクォート / single quote | 0x27 | %27 |
( | 始め小括弧 / left parenthesis | 0x28 | %28 |
) | 終わり小括弧 / right parenthesis | 0x29 | %29 |
* | アスタリスク / asterisk | 0x2A | %2A |
+ | プラス記号 / plus sign | 0x2B | %2B |
, | カンマ / comma | 0x2C | %2C |
; | セミコロン / semicolon | 0x3B | %3B |
= | 等号 / equals | 0x3D | %3D |
% | パーセント記号 / percent sing | 0x25 | %25 |
スペース / space | 0x20 | %20 |
Content-Type: application/x-www-form-urlencoded
application/x-www-form-urlencodedは、HTMLフォームからWebサーバーへデータを送信する際のデータ形式(Content-Type)の一つ。送信方法には GET と POST の2種類があり、GET の場合は URI の末尾に クエリ文字列(クエリストリング) が付与される。例えば次のような URL があるとき、「?q=percent+encoding」の部分が クエリ文字列である。
https://www.google.com/search?q=percent+encoding
application/x-www-form-urlencoded では、パラメーター名 と パラメーター値 に対して パーセントエンコーディング を用いる。このとき、スペース は +記号 または %20 に置き換える。
例に示した「percent+encoding」を エンコード前の値に戻すと、「percent encoding」となる。
同意語
- 【日】パーセントエンコーディング
- 【日】パーセントエンコード
- 【英】percent encoding(パーセント エンコーディング)