目录
- 一、URL编码
- 二、Base64
- 三、URL编码 vs 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编码直接替换特殊字符(如
-
可逆性与安全性:
- 两者均为编码而非加密,敏感数据需额外加密处理。