Base64 编解码
即时把文本编码为 Base64 或解码 Base64 字符串。
什么是 Base64?
Base64 是一种将任意二进制数据编码成 ASCII 字符串的方案,使用 64 个可打印字符:A–Z、a–z、0–9 以及 + 与 /。补位字符 = 用于让输出长度始终是 4 的倍数。Base64 最初是为了让二进制数据能安全通过 7 位字符通道(例如邮件 MIME),因为这些通道会破坏高位字节。
如今 Base64 常见于 CSS/HTML 中的 data URI、HTTP Basic 认证头、JSON Web Token 的 payload 段,以及在 JSON/XML 中传输二进制附件。还有一种 URL 安全变体,把 + 换成 -、把 / 换成 _,使编码字符串可直接嵌入 URL。
本工具完全在浏览器中完成编解码。输入会先用标准 TextEncoder 转成 UTF-8 字节,因此中文、日文、韩文、emoji 等多字节字符可以无损往返。解码时也会容忍输入中的换行与空白。
使用场景
- 在 CSS 或 HTML 中通过 data URI 内嵌小图标或字体。
- 在 JSON / XML 中传输二进制载荷。
- 解码 HTTP Basic 认证头中的 "Basic " 后的 token。
- 查看 JWT payload 段(两个点之间的中间一段)。
- 把需要通过 7 位字符通道传输的凭据或短消息进行编码。
最佳实践
- 永远不要把 Base64 当作加密 —— 任何人都能用几行代码解码。
- 嵌入到 URL 时使用 URL 安全变体(- 和 _)。
- 解码前去掉换行与空白,避免源里粘进来的换行干扰。
- Base64 会让数据膨胀约 33%,再加上 MIME 换行还会更多。
代码示例
JavaScript
const encoded = btoa(unescape(encodeURIComponent("héllo")));
// 'aMOpbGxv'
const decoded = decodeURIComponent(escape(atob(encoded)));Python
import base64
encoded = base64.b64encode("héllo".encode("utf-8")).decode("ascii")
decoded = base64.b64decode(encoded).decode("utf-8")Bash
echo -n 'héllo' | base64 # 编码
echo 'aMOpbGxv' | base64 -d # 解码常见问题
Base64 编码能保护我的数据吗?
不能。Base64 是编码,不是加密 —— 任何人都能解码。它只用于传输,不用于保密。
Base64 输出会变大多少?
约 33%(每 3 字节变成 4 个字符)。
支持中文 / 日文 / emoji 吗?
支持。输入会先转为 UTF-8 字节再编码,所有 Unicode 字符都可以无损往返。
解码后是乱码怎么办?
可能输入是 URL 安全变体(用 - 和 _),或包含多余的空白。清理后再试。
结尾的 = 是什么?
是补位。Base64 输出长度必须是 4 的倍数,源字节数不被整除时编码器会追加一到两个 = 字符。