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 把任意二进制数据编码为文本,会显著改变原文,用于传输二进制。