如果一个保留字符在特定上下文中具有特殊含义(称作“reserved purpose”),且URI中必须使用该字符用于其它目的,那么该字符必须百分号编码。百分号编码一个保留字符,首先需要把该字符的ASCII的值表示为两个16进制的数字,然后在其前面放置转义字符(“%”),置入URI中的相应位置。(对于非ASCII字符,需要转换为UTF-8字节序,然后每个字节按照上述方式表示。)
保留字符的百分号编码:
!(叹号) %21
# %23
$ %24
& %26
'(单引号) %27
( %28
) %29
* %2A
+ %2B
,(逗号) %2C
/ %2F
:(冒号) %3A
;(分号) %3B
= %3D
? %3F
@ %40
[ %5B
] %5D
在特定上下文中没有特殊含义的保留字符也可以被百分号编码,在语义上与不百分号编码的该字符没有差别。
在URI的“查询”成分(?字符后的部分)中,例如“/”仍然是保留字符但是没有特殊含义,除非一个特定的URI有其它规定该/字符在没有特殊含义时不需要百分号编码。
如果保留字符具有特殊含义,那么该保留字符用百分号编码的URI与该保留字符仅用其自身表示的URI具有不同的语义。