Base64 编码/解码
将文本编码为 Base64,或将 Base64 解码回文本——完整支持 Unicode,并提供可选的 URL 安全变体。所有操作都在您的浏览器中完成。
输出
使用方法
Base64 是一种仅使用 64 个可打印 ASCII 字符来表示二进制数据(或任意文本)的方法:大小写字母 A-Z 和 a-z、数字 0-9,以及两个额外符号,通常是 + 和 /。当需要时,末尾会加上 = 字符,将输出填充为 4 的倍数长度。原始字节可能包含一些系统会误判为命令的控制字符,Base64 不直接传输这些原始字节,而是将每 3 个输入字节重新编码为从这 64 个字符字母表中选取的 4 个输出字符,从而确保结果始终是纯文本、安全的文本。 Base64 之所以存在,是因为计算机用来传输数据的许多通道最初都是为文本而非任意字节设计的。电子邮件(MIME)、JSON 数据、XML 文档以及许多 HTTP 请求头都可能破坏、截断或误解原始二进制数据——一个偶然出现的控制字符就可能破坏消息,或使简单的解析器崩溃。先将二进制数据编码为 Base64,就能将其转换为普通的字母、数字和少数几个符号,而每一个基于文本的系统都早已知道如何原样将它们从发送方传递到接收方。 一个简短的例子可以让原理更加具体。对单词 Man 进行编码——三个 ASCII 字节,77、97、110——Base64 将这 24 位分成四个 6 位一组的块,并将每个块映射为字母表中的一个字符,得到 TWFu。而对两个字母组成的单词 Hi 编码时,只有 16 位数据,因此 Base64 会对最后一组进行填充,并在末尾加上 = 字符,得到 SGk=。由于每 3 个输入字节会变成 4 个输出字符,Base64 文本通常比原始数据大约 33%——在以这种方式嵌入大文件之前,这条经验法则值得牢记。 使用此工具时,选择“编码”可将纯文本转换为 Base64,选择“解码”可将 Base64 转换回可读文本,然后在输入框中粘贴或输入内容——结果会立即显示在输出框中。包括表情符号和非英语文字在内的 Unicode 文本,会在编码前先转换为 UTF-8 字节,因此可以正确地往返转换,而不会像老式的 btoa() 类工具那样出错。如果结果需要用在 URL 或文件名中,请开启“URL 安全”选项:它会将 + 和 / 替换为 - 和 _,并去掉末尾的填充字符。 Base64 在幕后无处不在:data URI 可以将小图片、图标或字体直接嵌入 CSS 或 HTML 中,而无需单独的文件请求;HTTP Basic Authentication 请求头以 Base64 编码的形式携带用户名和密码;JSON Web Token(JWT)也以这种方式编码其头部和载荷部分;电子邮件附件同样经过 Base64 编码,以便 MIME 能在纯文本的消息正文中携带二进制文件。有一点必须说清楚:Base64 是一种编码,而不是加密。任何人都可以一步将其解码回原始文本,无需密钥或密码,因此切勿依赖它来保护数据的机密性——如需机密性,请使用真正的加密方式。
常见问题
- 它支持表情符号和非英语文本吗?
- 支持。文本会先编码为 UTF-8,因此表情符号、重音符号和中日韩(CJK)字符都能正确地往返转换——而简单的 btoa() 在处理这些字符时会出错。
- 什么是 URL 安全的 Base64?
- 这是一种变体,将 + 和 / 替换为 - 和 _,并省略填充字符,因此结果可以安全地用于 URL、查询字符串和文件名中。
- 我的数据会被发送到其他地方吗?
- 不会。编码和解码完全在您的浏览器中进行——您的文本永远不会离开您的设备。
- Base64 是加密方式吗?它安全吗?
- 不是。Base64 是一种可逆的编码方案,而不是加密——它没有密钥,任何人都可以使用同样的工具,或用任何一种语言的一行代码,将其解码回原始文本。它的作用是让二进制数据可以安全地以文本形式传输,而不是隐藏或保护数据。如需机密性,请改用 AES 或 TLS 等真正的加密方式。