开发者工具

Base64 编码

将文本编码为 Base64 字符串。

给这个工具评分

如何使用 Base64 编码

  1. 输入或粘贴你的文字。
  2. 复制 Base64 输出结果。

关于 Base64 编码

Base64 是一种编码方式,不是加密。它完全不提供任何安全性——任何人都可以把结果粘贴到Base64 解码工具中,直接读出原文。它真正的作用,是用一套安全的64字符字母表来表示任意数据,使其能够在只为传输文本而设计的系统中安然通过:通过 MIME 传输的邮件附件、data: URI、内嵌到 CSS 或 HTML 中的图片,以及嵌在 JSON 或 XML 中的二进制字段。

代价是体积。Base64 把每3个字节打包成4个字符,所以输出体积大约会比输入多出三分之一,末尾还会用=补齐,使长度成为4的倍数。正是这部分开销,使得把大图片内嵌为 data URI 通常并不划算——为了省下一次请求,你要在每个字节上多付出33%的代价。

本编码器使用的是标准字母表,其中包含+/。它不是把这两个字符替换为-_的 URL 安全变体,所以如果你需要 Base64URL 格式,请在编码之后自行替换这两个字符。你的文字在编码前会先转换为 UTF-8 字节,所以表情符号、重音字符和非拉丁文字都能正确编码——而一次朴素的 btoa() 调用遇到这些字符会直接报错。所有处理都在你的浏览器中完成,把真实数据粘贴到这里不会发送到任何地方。

常见问题

Base64 是一种隐藏或保护数据的方式吗?

不是。它是一种可逆编码,没有密钥,也没有秘密可言。任何看到这段字符串的人都能在几秒内解码出来。如果你需要保密,应该对数据进行加密——Base64 只是用来让字节能够安全地通过纯文本通道传输。

为什么输出比我输入的内容更长?

Base64 用4个字符表示3个字节的数据,所以体积大约会比原始字节多出33%,再加上补齐用的字符。这部分开销是不可避免的——这是仅使用安全 ASCII 字符所付出的代价。

这个工具生成的是 URL 安全的 Base64 吗?

不是——它使用的是包含 + 和 / 的标准字母表,而这两个字符在网址中都有特定含义。要获得 URL 安全的变体,请把输出中的 + 替换为 -,把 / 替换为 _,如果你的接收方不需要 = 补齐,也可以去掉它。

它能处理表情符号和非英语文字吗?

可以。文字会先被编码为 UTF-8 字节,再进行 Base64 编码,所以任何你能输入的内容都能正常处理。这一步正是普通 btoa() 会跳过的环节,这也是为什么 btoa() 遇到 U+00FF 以上的字符会直接报错。

末尾的 = 号是什么?

是补齐符号。Base64 以3字节为一组进行处理,当输入长度不是3的倍数时,最后一组会被补齐,使输出长度保持为4的倍数。你会看到一个或两个 = 字符,绝不会出现三个。