URL编码和base64
一、URL编码
URL编码是一种将URL中的非ASCII字符或特殊符号转换为 %XX 格式的技术(XX为十六进制值)。其核心规则包括:
- 空格可转为
+或%20; - 特殊字符(如
?,#,&等)需转为%+ 十六进制ASCII码; - 仅允许保留字符(如字母、数字、
-,_,.,~)不编码。
示例:
http://example.com/你好?name=张三 → http://example.com/%E4%BD%A0%E5%A5%BD?name=%E5%BC%A0%E4%B8%89
应用场景:
URL参数、表单提交、路径中的特殊字符处理。
二、Base64
Base64是一种将二进制数据转换为可打印ASCII字符(A-Z, a-z, 0-9, +, /)的编码方式。其核心规则包括:
- 每3字节(24位)拆分为4组6位,映射到字符集;
- 不足时用
=填充。
示例:
中文“你好” → 5L2g5aW9;
二进制 00000001 → AQ==。
应用场景:
邮件附件、网页嵌入图片、API传输二进制数据、加密预处理。
工具函数:
- JavaScript:
btoa()/atob() - Python:
base64.b64encode()/base64.b64decode()
三、URL编码 vs Base64 对比表
| 特性 | URL编码 | Base64 |
|---|---|---|
| 用途 | URL中特殊字符转义(如 ?, #) |
二进制数据转文本(如图片、文件) |
| 字符集 | % + 十六进制值(如 %20 代表空格) |
A-Za-z0-9+/= |
| 可逆性 | 完全可逆 | 完全可逆 |
| 填充符 | 无 | 有(=) |
| 数据长度 | 可能增加(如汉字转为3字节 %XX%XX%XX) |
增加约33%(4字符 → 3字节) |
| 加密性 | 非加密(仅编码) | 非加密(仅编码) |
| 常见场景 | URL参数、路径 | 邮件附件、图片嵌入、API数据传输 |
| URL安全变体 | 无 | 有(- 替代 +,_ 替代 /) |
四、关键区别总结
-
目标场景:
- URL编码用于确保URL本身的合法性(如保留字符)。
-
字符处理:
- URL编码直接替换特殊字符(如
?→%3F)。 - Base64将所有数据转换为字符集映射(如
00000001→AQ==)。
- URL编码直接替换特殊字符(如
-
可逆性与安全性:
- 两者均为编码而非加密,敏感数据需额外加密处理。

浙公网安备 33010602011771号