Base64 编码与解码
把文本或文件转成 Base64,也能把 Base64 还原成文本或文件。中文和 emoji 不会乱码,URL 安全版本一键切换,输入有错时会告诉你是第几个字符。不会上传任何内容,全部在本页里运行。
文本与 Base64
18 字节的 UTF-8 变成了 24 个字符,大了 33.3%。
文件转 Base64
选择一个文件,得到它的 Base64 和可直接粘贴的 data: URI。会使用上面的字符表、填充和换行选项(data: URI 始终是单行)。文件只在本页里读取,不会上传。
Base64 转文件
粘贴 Base64 或 data: URI,还原成文件。如果字节以 PNG、JPEG、GIF 或 WebP 的文件头开始,会显示预览;其他类型不预览,只能下载。
在上面粘贴 Base64,然后点“解码”。
它是怎么工作的
- •文本会先按 UTF-8 变成字节,Base64 编码的就是这些字节。所以“世界”和 emoji 的结果与 python3、base64 命令完全一致。解码则反过来;如果字节不是合法的 UTF-8 文本,会明确告诉你,而不是显示一堆乱码。
- •Base64 把每 3 个字节写成 4 个字符,所以结果大约多出三分之一。页面显示的是你这份内容按实际长度算出来的数字,不是经验估计。按 76 个字符换行(MIME)会再多出一点。
- •URL 安全字符表用 - 和 _ 代替 + 和 /,这样结果可以放进网址或文件名。填充是末尾的 =,用来把长度补成 4 的倍数。很多系统(包括 JSON Web Token)会省略它。
- •解码器有意比多数命令行工具宽容:会忽略空格和换行,接受缺少的 = 填充,两种字符表都认,也会自动去掉 data: URI 前缀。除此之外则更严格:不属于 Base64 的字符、出现在中间的 =、不可能成立的长度,都会连同位置一起报告,而不是悄悄跳过,因为悄悄丢掉字符可能改变你的数据。
- •“Base64 转文件”只有在开头的字节符合 PNG、JPEG、GIF 或 WebP 的文件头时才会显示预览,不看文件名;其他类型一律不渲染,只提供下载。最大 10 MB 的文件在本页里读取。
常见问题
- 会上传我的内容吗?
- 不会。编码、解码、读取文件、预览和下载全都在你的设备上、在本页里完成,页面不会把你的文本或文件发往任何地方。
- Base64 能用来隐藏或保护数据吗?
- 不能。它只是一种编码,不是加密,任何人不需要密钥就能解开,就像本页做的那样。不要用它来保护密码、令牌或个人信息。
- 为什么解码结果提示不是合法的 UTF-8?
- Base64 本身没问题,但这些字节不是 UTF-8 文本。它们可能是图片、压缩文件、GBK 或 Latin-1 等其他编码的文字,或者是加密数据。请用“Base64 转文件”下载,再用合适的程序打开。
- 和 python、base64 命令有什么不同?
- 标准和 URL 安全两种 Base64 的编码结果完全相同。解码时,Python 默认的 b64decode 会悄悄丢掉不认识的字符,并且在缺少填充时报错;本页则接受缺少的填充,并把不认识的字符报告出来。macOS 和 Linux 的 base64 命令在换行和部分非法输入上的表现也不一样,请确认你的脚本用的是哪一个。