URL 编码的工作原理
URL 编码会先把非 ASCII 字符转换为 UTF-8 字节,再把每个需要转义的字节写成 % 后跟两位十六进制数字。ASCII 范围内的字符只有一个字节,因此其百分号编码恰好对应 ASCII 字节值。
常见的 URL 编码字符:
| 字符 | URL 编码 |
|---|---|
| 空格 | %20 |
| ! | %21 |
| # | %23 |
| & | %26 |
| = | %3D |
| ? | %3F |
| / | %2F |
| : | %3A |
注意: 查询字符串中的空格也可以编码为 +,但 %20 通用。
URL 编码示例
以下是一些常见的 URL 编码示例:
| 原来的 | URL编码 |
|---|---|
hello world! |
hello%20world%21 |
https://example.com?q=hello world |
https%3A%2F%2Fexample.com%3Fq%3Dhello%20world |
file name.txt |
file%20name.txt |
$100 OFF! |
%24100%20OFF%21 |
何时使用 URL 编码
- 查询参数: 对 URL 中的值进行编码,例如 ?name=John%20Doe
- 表单提交: 对通过 GET 请求提交的表单数据进行编码
- API 请求: 确保带有特殊字符的 URL 正常工作
- 数据库值: 对将成为 URL 一部分的值进行编码
- 文件路径: 对包含空格或特殊字符的文件名进行编码