Base64 解码
在下方粘贴Base64字符串并点击解码将其转换为纯文本。所有处理均在浏览器中本地完成。
URL 安全字符集、换行以及缺失的填充都可以直接接受。
已复制!
什么是Base64解码?
Base64解码将Base64编码的ASCII字符串转换回原始二进制数据或文本。这是Base64编码的逆过程。
如果输入包含Base64字母表之外的字符(A-Z、a-z、0-9、+、/、=),解码将失败并报错。
解码使用浏览器自带的 Base64 函数,它相当严格:只接受标准字符集和正确的填充,其余一律拒绝而不是去猜。解出的字节随后按 UTF-8 文本读取。
正在排查一个死活解不开的问题?
解不开的数据包通常是症状而不是病根:链路上某处做了两次编码、字符集是被假定而不是被声明、令牌签名所覆盖的字节和大家以为的并不完全一致。这类活我们在做,围绕集成、API 以及在它们之间传递数据的系统。
说说哪里出了问题常见问题
我的 Base64 字符串为什么解不开?
几乎总是四件事之一:出现了字符集之外的字符,通常意味着 URL 被弄坏了,或者复制时带上了多余标点;长度多出孤零零一个字符,无法表示整数个字节;使用了 URL 安全字符集,而它的连字符和下划线标准解码器并不接受;或者填充在传输途中被剥掉了。本页用的是浏览器自带的解码器,对这四种情况都很严格,宁可拒绝也不去猜。
为什么解码结果不是可读的文本?
因为那些字节本来就不是文本。Base64 承载的是任意数据,里面可能是图片、PDF、压缩包,或者一段序列化结构。本页把解出的字节按 UTF-8 文本读取,所以不是文本的内容会显示为空或乱码,这本身就是答案。如果你本以为会是文本,那就要怀疑双重编码:有东西把已经是 Base64 的数据又 Base64 了一遍。
没有填充的 Base64 能解码吗?
在这里不行。填充的作用,是让解码器在长度不是四的倍数时知道数据流到哪里结束,而浏览器的解码器要求必须有它。很多系统会去掉填充,因为等号在 URL 和文件名里很碍事;如果你的字符串正是这种,补上等号直到长度能被四整除即可解码。多出孤零零一个字符的长度没法这样补救,因为一个 Base64 字符只携带六位,凑不出完整字节。
把敏感数据粘贴到这个页面安全吗?
解码在你的浏览器里进行,不会发往任何地方,所以风险不在页面本身,而在这台机器上的其他一切:浏览器扩展能读取页面内容,粘贴过的机密也常常留在剪贴板历史里。若是线上生产环境的凭据,请改在本地解码。命令行工具在每台 Unix 机器上都现成可用,PowerShell 里也有对应的做法。
data URI 该怎么解码?
先把前缀去掉。一个 data URI 由 data 这个词、一个 MIME 类型、一个表示载荷是 Base64 的标记,以及载荷本身组成,只有最后这部分才能解码。把逗号及其之前的内容全部删掉,再粘贴剩下的部分。多切或少切一个字符,正是随后解码失败的常见原因。