{ }
EN

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 的倍数,源字节数不被整除时编码器会追加一到两个 = 字符。