返回

Base64 编码 / 解码

输入
输出
结果将显示在这里...

工具介绍

Base64 把任意字节写成 A–Z、a–z、0–9、+、/ 和填充用的 =,好放进只适合文本的字段。这个页面可以编码,也可以解码。它不保密:任何人拿到结果都能解回来。

编码时先把文字按 UTF-8 变成字节,再做标准 Base64,并在长度不够 4 的倍数时补 =。实现等价于先做 UTF-8,再调用浏览器的 btoa。解码先 atob,再按 UTF-8 变回文字。失败时输出清空,并提示输入不是有效的 Base64。

计算示例

  1. 输入:编码「你好」

    输出:5L2g5aW9

  2. 输入:编码 hello

    输出:aGVsbG8=

  3. 输入:解码 5L2g5aW9

    输出:你好

使用限制

  • 只处理文本。图片或文件要走别的工具,这里不会读文件字节。换行和空格都会算进字节,编码前后的空白不一致就会得到不同结果。
  • 解码使用 UTF-8。若原文是用 GBK 编出来的 Base64,解出来会是乱码或直接失败。
  • 单字符 A 编码为 QQ==。去掉末尾等号再解码,不一定成功。

常见错误

  • 把它当成加密,把密码或令牌用 Base64「保护」后发出去。这只是换了一种写法。
  • 解码时带了换行或解释性文字。页面把输入整段交给 atob,多余字符会导致失败。
  • 用 URL 场景里的 - 和 _ 直接解码。这个页面做的是标准 Base64,不是 Base64URL。

常见问题

为什么 hello 末尾有一个等号?▾
hello 是 5 个字节,Base64 以 3 字节为一组,最后一组不足,所以补一个 =,得到 aGVsbG8=。
中文为什么变长这么多?▾
「你好」的 UTF-8 是 6 个字节,6 字节编成 8 个 Base64 字符。
abc 这样的字符串能解吗?▾
长度不是 4 的倍数,浏览器的 atob 会抛错,页面显示解码失败。

相关工具