Base64 编码和解码

把文本或文件编成 Base64,或把 Base64 还原成文字。可以选字符编码,默认是 UTF-8。选 Hex 时,可以和十六进制字节互转。计算都在浏览器里完成。

Base64 解决的是“字节不能直接放进文本”的问题

JSON、HTML、邮件和很多配置项只接受可见字符。Base64 把任意字节变成字母、数字、加号和斜线,方便搬运。它不是加密,谁都能还原。适合把小文件、UTF-8 字符串放进文本接口,不适合拿来藏密码。

这一页在浏览器里完成。字符编码决定文字变成哪些字节,默认是 UTF-8,也是现在接口对中文、表情和带音标字母的做法。对方如果是老系统,可以改成 GBK、Big5 或 UTF-16。选 Hex 时,输入框里是十六进制字节,可以把 Base64 和十六进制互转。文件按原始字节读取,不看这个选项,PNG 或 PDF 不会被当成文本改写。内容不会上传。

  • 标准字符表使用 + 和 /,并用 = 补齐。MIME 和多数语言的标准库都是这套。
  • URL 安全字符表把它们换成 - 和 _,并去掉补齐。JWT 的每一段和不少查询参数用的是这套。
  • 76 列换行对应邮件里的 MIME 行宽。要贴进 JSON 时把换行关掉。
  • data URI适合直接放进 img 或 CSS 的 url()。图片要选文件来编码,不要只编码文件名。

怎么用

  1. 粘贴文字,或选择文件。选了文件就按字节编码,不再使用文本框里的内容。
  2. 选择编码或解码。解码同时接受标准和 URL 安全两种写法,空格和换行会被忽略。
  3. 编码时再选字符表和是否换行。只有下一步是 HTML 或 CSS 时才勾选 data URI。
  4. 短字符串可以开着“边输入边更新”。大文件要等读取结束才会出结果。
  5. 复制或下载。解码失败通常是字符串被截断,或根本不是 Base64。

它实际按什么规则算

每 3 个字节变成 4 个字符。长度不是 3 的倍数时,用 = 补到 4 的倍数。URL 安全模式会去掉这些补齐字符,解码时再补回去。

data:text/plain;base64,aGVsbG8= 这种写法可以解码:只取逗号后面的部分。邮件里按 76 列折行的内容也能解,因为空白会被丢掉。

字符编码会先改变字节,再做 Base64。“中文”在 UTF-8 里是 6 个字节,在 GBK 里是 4 个字节,所以两套 Base64 不一样。如果别的工具结果不同,先把编码改成和它一样,或改成 Hex 对字节。想单独看字节可以用 字符串转字节,百分号编码见 URL 编码。

常见问题

解码出来是乱码?

这些字节用当前编码读不成文字。老系统的中文可以试 GBK 或 UTF-16,也可以切到 Hex 看原始字节。图片、压缩包解码后不会是可读句子。文件按原始字节编码,不使用字符编码选项。

带 - 和 _ 的字符串能解吗?

能。解码不要求你先切换字符表。

末尾的等号必须有吗?

各家库要求不一样。这里解码允许缺少补齐。如果对方的解析器很严,编码时不要选 URL 安全,把 = 留下来。

这样算加密了吗?

不算。Base64 可以完整还原。不要把密码或私钥贴进来就以为别人看不到。