URL 编码对照表

URL 百分号编码(Percent-Encoding)对照表:保留字符与其 %XX 编码一一对应,附说明,方便在拼接查询参数与路径时快速查阅。

字符编码说明
空格 (space)%20表单中也可写作 +(application/x-www-form-urlencoded)
!%21感叹号
#%23片段标识符分隔符
$%24美元符号
&%26查询参数分隔符
'%27单引号
(%28左括号
)%29右括号
*%2A星号
+%2B加号(表单中代表空格)
,%2C逗号
/%2F路径分隔符
:%3A方案/主机分隔符
;%3B参数分隔符
=%3D键值对分隔符
?%3F查询起始符
@%40用户信息服务分隔符
[%5B左方括号
]%5D右方括号
%%25百分号本身必须编码
"%22双引号
<%3C小于号
>%3E大于号
\%5C反斜杠
^%5E脱字符
`%60反引号
{%7B左花括号
|%7C竖线
}%7D右花括号
~%7E波浪号

常见问题

为什么空格有时是 %20,有时是 +?

在 application/x-www-form-urlencoded(表单提交)中空格编码为 +;而在 URL 路径或查询的百分号编码中,空格统一为 %20。两者语境不同,不要混用。

哪些字符必须编码?

RFC 3986 保留字符(: / ? # [ ] @ ! $ & ' ( ) * + , ; =)在非分隔符用途时必须编码;此外所有非 ASCII 字符(如中文)也必须编码。

% 后面为什么是两位十六进制?

百分号编码把字节表示为 %XX 形式。非 ASCII 字符先按 UTF-8 编码为若干字节,再逐字节转成 %XX。

URL 编码和 Base64 编码有什么区别?

URL 编码只转义不安全字符,保留可读结构,用于 URL;Base64 把任意二进制数据编码为文本,会显著改变原文,用于传输二进制。