如何将文本编码为 Base64
- 在输入框中输入或粘贴文本,也可以直接打开文件。
- 选择字符集(UTF-8 适用于所有语言和表情符号),并按需开启 URL 安全输出或每 76 个字符换行。
- 复制 Base64 结果,或将其下载为文本文件。
Base64 编码的原理
编码器会先把文本转换为字节,每 3 个字节(24 位)分为一组,再把每组转换成 64 字符字母表中的 4 个字符。如果最后一组不足 3 个字节,就用 = 号补齐。这就是 Base64 输出比输入大约多出 33% 的原因:Man 会变成 TWFu。
常用编程语言中的 Base64 编码
- JavaScript:
btoa(String.fromCharCode(...new TextEncoder().encode(text))) - Python:
base64.b64encode(text.encode()).decode() - PHP:
base64_encode($text) - Java:
Base64.getEncoder().encodeToString(text.getBytes(UTF_8)) - Linux/macOS:
echo -n 'text' | base64
常见问题
为什么 Base64 结果比原文本更长?
Base64 用 4 个字符存储 3 个字节,因此输出大约是输入的 4/3,再加上填充字符。中文等非拉丁字符在 UTF-8 中占 2–4 个字节,所以编码后的 Base64 还会更长。
末尾的 = 号是什么意思?
它们是填充字符。一个 = 表示最后一组有 2 个字节,两个 == 表示最后一组只有 1 个字节。URL 安全的 Base64 通常会省略它们。
可以编码表情符号和中文等非英文文本吗?
可以。只要字符集保持为 UTF-8,任何语言、符号或表情符号都能被正确编码,并且可以在任何系统上解码。
什么时候需要开启每 76 个字符换行?
仅在电子邮件(MIME)和部分要求按行折叠的 PEM 证书中需要。用于 API、JSON、URL 和 Data URI 时,请保持关闭。