数据
Base64 编码与解码
正确处理 UTF-8,中文、重音字母和 emoji 往返都不会乱码——很多脚本直接对原始文本调用 btoa,所以会出问题。
结果会显示在这里。
怎么用
- 粘贴要编码的文本,或粘贴一段 Base64 准备解码。
- 点「编码」把文本转成 Base64,点「解码」反向转换。
- 用上方按钮复制结果。
Base64 不是加密
它是一种传输编码:三个字节变成四个 ASCII 字符,好让二进制数据通过只接受文本的通道,比如邮件正文和 JSON 字段。任何人调一个库函数、不需要任何密钥就能解开。把密码或 API key 转成 Base64,只能挡住随意一瞥,别的作用没有。
为什么输出会大三分之一
64 个符号每个携带 6 比特,四个字符正好编码 24 比特,也就是三个字节。比例固定是 4:3,再加填充和换行。所以把图片内联成 data URI 会让体积涨约 33%,所以当有二进制传输可用时,Base64 并不是大载荷的好选择。
Data URL、PEM 文件与换行
Base64 有两套互不兼容的惯例,混用会安静地出错。MIME(邮件附件、PEM 证书)每 76 个字符换行;多数编程语言完全不换行。一张每字符都正确的证书,换行方式不对,读它的工具照样拒绝。
拼 data URL 时不能有换行,而且 MIME 类型必须和真实字节一致:data:image/png;base64, 后面跟一张 JPEG,在多数浏览器里仍然能显示——所以这个错误只会在之后、在某个信任声明类型的系统里暴露出来。
常见问题
为什么有些 Base64 末尾带等号?
Base64 按 3 字节一组处理,剩余的字节用 = 补齐,使总长度保持 4 的倍数。
Base64 算加密吗?
不算。它只是一种传输编码,任何人都能立刻解开,绝不要用它隐藏密码或密钥。
为什么中文在别的工具里会变成乱码?
那些工具把输入当成 Latin-1。这里先把文本转成 UTF-8 字节,所以往返不会损坏。
能把 Base64 还原成文件吗?
可以还原出原始字节,但前提是你知道它是什么格式。没有前面的 MIME 类型,解码出来的图片没有扩展名,也没有办法打开。
为什么我的 Base64 末尾有一两个等号?
Base64 按三个字节一组处理。剩一个字节补两个 =,剩两个补一个。补位是为了让总长度保持四的倍数。