Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

URLエスケープされる文字の範囲(ChromeとGoogle検索の挙動を例に)

URL中に含めてもよい文字(URLの表現上エスケープする必要のない文字)はRFC3986で定められている。 stackoverflow.com

一方、Webアプリケーションの処理中で実際にエスケープしなければいけない文字はそのアプリケーションの実装によって変わる。

ChromeGoogle検索の挙動を例に、実際に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 ~ ~ ~ ~ ~