URL中に含めてもよい文字(URLの表現上エスケープする必要のない文字)はRFC3986で定められている。 stackoverflow.com
一方、Webアプリケーションの処理中で実際にエスケープしなければいけない文字はそのアプリケーションの実装によって変わる。
ChromeとGoogle検索の挙動を例に、実際にURLにASCII中の文字を入力した場合にエスケープされる文字の範囲を示す。
ブラウザのURLバーに直接URLを入力した場合
#より前に文字を置いた場合
https://www.google.com/search?q=!"$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ #
![]()
#より後に文字を置いた場合
https://www.google.com/search?q=あ# !"$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~
![]()
ブラウザの検索バーに検索条件として入力した場合
※文字列先頭・末尾の空白文字はトリムされる
Chromeの新しいタブに表示されたGoogleのテキストボックスに入力した場合も同じ挙動になる模様。
# !"$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~
![]()
Googleのテキストボックスに検索条件として入力した場合
# !"$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~
![]()
| # | HEX | CHAR | URL入力(#より前) | URL入力(#より後) | Chrome検索バー | Googleテキストボックス |
|---|---|---|---|---|---|---|
| 1 | 0x20 | SPC | %20 | %20 | + | + |
| 2 | 0x21 | ! | ! | ! | ! | %21 |
| 3 | 0x22 | " | " | " | " | " |
| 4 | 0x23 | # | # | # | %23 | %23 |
| 5 | 0x24 | $ | $ | $ | %24 | %24 |
| 6 | 0x25 | % | % | % | %25 | %25 |
| 7 | 0x26 | & | & | & | %26 | %26 |
| 8 | 0x27 | ' | %27 | ' | %27 | %27 |
| 9 | 0x28 | ( | ( | ( | ( | %28 |
| 10 | 0x29 | ) | ) | ) | ) | %29 |
| 11 | 0x2A | * | * | * | * | * |
| 12 | 0x2B | + | + | + | %2B | %2B |
| 13 | 0x2C | , | , | , | %2C | %2C |
| 14 | 0x2D | - | - | - | - | - |
| 15 | 0x2E | . | . | . | . | . |
| 16 | 0x2F | / | / | / | %2F | %2F |
| 17 | 0x30 | 0 | 0 | 0 | 0 | 0 |
| 18 | 0x39 | 9 | 9 | 9 | 9 | 9 |
| 19 | 0x3A | : | : | : | %3A | %3A |
| 20 | 0x3B | ; | ; | ; | %3B | %3B |
| 21 | 0x3C | < | < | < | < | < |
| 22 | 0x3D | = | = | = | %3D | %3D |
| 23 | 0x3E | > | > | > | > | > |
| 24 | 0x3F | ? | ? | ? | %3F | %3F |
| 25 | 0x40 | @ | @ | @ | %40 | %40 |
| 26 | 0x41 | A | A | A | A | A |
| 27 | 0x5A | Z | Z | Z | Z | Z |
| 28 | 0x5B | [ | [ | [ | %5B | %5B |
| 29 | 0x5C | \ | \ | \ | %5C | %5C |
| 30 | 0x5D | ] | ] | ] | %5D | %5D |
| 31 | 0x5E | ^ | ^ | ^ | %5E | %5E |
| 32 | 0x5F | _ | _ | _ | _ | _ |
| 33 | 0x60 | ` | ` | %60 | %60 | %60 |
| 34 | 0x61 | a | a | a | a | a |
| 35 | 0x7A | z | z | z | z | z |
| 36 | 0x7B | { | { | { | %7B | %7B |
| 37 | 0x7C | | | | | | | %7C | %7C |
| 38 | 0x7D | } | } | } | %7D | %7D |
| 39 | 0x7E | ~ | ~ | ~ | ~ | ~ |