ウェブ開発者なら必ず知っておくべき基礎知識(3)パーセントエンコード(URLエンコード)
URI(URL)の構成要素において使用できない文字を表現するのに用いられるのがパーセントエンコードです。パーセントエンコードはURLエンコードと呼ばれることも多いです。
パーセントエンコードは1バイトの文字を3つの文字に変換します(2バイトの文字の場合には1バイトずつ変換するため6つの文字に変換されます)。
この3つの文字の1文字目は必ず%
となり、パーセントエンコードされた文字を表していることを示します。%
自体はURIの構成要素において使用できない文字となっているため、%
自体とパーセントエンコードされた文字がURIの構成要素の中で混同される恐れはありません。
2文字目と3文字目は2桁の16進文字列となり、この16進文字列がパーセントエンコードされた文字の値(コードポイント)を表します(2バイトの文字はパーセントエンコードにより6つの文字に変換されますが、その中に含まれる2つの16進文字列が合わさって文字の値(コードポイント)を表します)。
この16進文字列においては大文字を使用するべきです。すなわち、a
、b
、c
、d
、e
、f
ではなく、A
、B
、C
、D
、E
、F
を使用するべきです。
URIの構成要素においてそのまま(パーセントエンコードを行わずに)使用できる文字は英数字と下の4個の文字のみです。
-
.
_
~
逆に、これ以外の文字を使用する場合にはパーセントエンコードを行わなければなりません。
すなわち、URIの構成要素においては主な文字は下のように表現されます。
%20
!
・・・%21
"
・・・%22
#
・・・%23
$
・・・%24
%
・・・%25
&
・・・%26
'
・・・%27
(
・・・%28
)
・・・%29
*
・・・%2A
+
・・・%2B
,
・・・%2C
-
・・・-
.
・・・.
/
・・・%2F
0
・・・0
1
・・・1
2
・・・2
3
・・・3
4
・・・4
5
・・・5
6
・・・6
7
・・・7
8
・・・8
9
・・・9
:
・・・%3A
;
・・・%3B
<
・・・%3C
=
・・・%3D
>
・・・%3E
?
・・・%3F
@
・・・%40
A
・・・A
B
・・・B
C
・・・C
D
・・・D
E
・・・E
F
・・・F
G
・・・G
H
・・・H
I
・・・I
J
・・・J
K
・・・K
L
・・・L
M
・・・M
N
・・・N
O
・・・O
P
・・・P
Q
・・・Q
R
・・・R
S
・・・S
T
・・・T
U
・・・U
V
・・・V
W
・・・W
X
・・・X
Y
・・・Y
Z
・・・Z
[
・・・%5B
\
・・・%5C
]
・・・%5D
^
・・・%5E
_
・・・_
`
・・・%60
a
・・・a
b
・・・b
c
・・・c
d
・・・d
e
・・・e
f
・・・f
g
・・・g
h
・・・h
i
・・・i
j
・・・j
k
・・・k
l
・・・l
m
・・・m
n
・・・n
o
・・・o
p
・・・p
q
・・・q
r
・・・r
s
・・・s
t
・・・t
u
・・・u
v
・・・v
w
・・・w
x
・・・x
y
・・・y
z
・・・z
{
・・・%7B
|
・・・%7C
}
・・・%7D
~
・・・~
なお、パーセントエンコードしなければならないのはURIの構成要素を記述する文字についてだけでURIの区切り文字はパーセントエンコードする必要はありませんので注意してください。
