Base64 与 URL 编码:%E4%B8%AD 是什么
一、%E4%B8%AD 和 5Lit 都是「中」
「中」这个字按 UTF-8 编码是 3 个字节:E4 B8 AD。两种常见编码方式各走各的路:
| 编码方式 | 「中」 | 「你好」 |
|---|---|---|
| UTF-8 字节(十六进制) | E4 B8 AD | E4 BD A0 E5 A5 BD |
| URL 编码(百分号编码) | %E4%B8%AD | %E4%BD%A0%E5%A5%BD |
| Base64 | 5Lit | 5L2g5aW9 |
规律很好记:URL 编码是给每个字节加一个 % 前缀,一个汉字 3 字节就变成 9 个字符;Base64 是把 3 字节重组成 4 个字符,所以一个汉字 3 字节 → 4 个字符。
二、Base64 的三条规则
- 每 3 个字节编成 4 个字符,体积约膨胀 1/3(+33%);不足 3 字节用
=补齐:a→YQ==,abc→YWJj; - 字符表是
A-Z a-z 0-9 + /,加上末尾的=填充; - 它是编码不是加密:没有密钥、完全可逆,任何人都能还原,别用它「保护」密码或隐私数据。
Base64 的常见用途是把二进制数据塞进只能传文本的通道(邮件附件、JSON 里的图片、签名参数),重点在于「可安全传输」,不在于「保密」。
三、URL 编码保留哪些字符
按 encodeURIComponent 口径:字母、数字与 - _ . ! ~ * ' ( ) 保留,其余字符一律转成 %XX:
- 空格 →
%20:a b+c→a%20b%2Bc - 加号 →
%2B:注意加号在 URL 的 query 里有「代表空格」的历史约定,路径里必须写%20 - 斜杠 →
%2F:/path/x y→%2Fpath%2Fx%20y
也就是说,做「把一段内容整段放进某个参数」这种操作时,斜杠、问号、以及连接符都会被编码,这样才能保证它不会被当成 URL 结构的一部分。
四、四个常见坑
- 编码不一致:「中」在 GBK 下是
D6 D0,在 UTF-8 下是E4 B8 AD,双方编码不同就会出现「看着一样却对不上」的乱码或校验失败,现代系统统一用 UTF-8。 - 双重编码:
%25E4%25B8%25AD是%E4%B8%AD又被编码了一次(%→%25),接口对接时最常见的「参数看着对、服务端解出来是乱码」。 - 把 Base64 当加密:直接解码就能还原,安全性为零。
- Base64 直接塞进 URL 参数:
+、/、=在 URL 里有特殊含义,需要再转义;规范做法是用 URL 安全的变体(base64url),把+/换成-_并去掉填充。
五、直接算
→ 编码转换器:Base64、十六进制、二进制编码与解码,输入实时显示字节
→ URL 编码解码:整段文本与 URL 参数互转,含中文百分号编码
→ Base32 编码:Base32 字母表与填充规则,体积膨胀比 Base64 更大
→ URL 解析:拆解协议、主机、路径、查询参数,看清编码后的真实内容
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。