什么是 Base64?
Base64 是一种将二进制或文本数据转换为 64 个可打印 ASCII 字符字符串的编码方案。它广泛用于电子邮件附件、在 HTML/CSS 中嵌入图片以及通过纯文本渠道传输二进制数据。解码将过程反转,还原为原始文本。
输入或粘贴文本,选择编码或解码,即时查看结果。
Base64 是一种将二进制或文本数据转换为 64 个可打印 ASCII 字符字符串的编码方案。它广泛用于电子邮件附件、在 HTML/CSS 中嵌入图片以及通过纯文本渠道传输二进制数据。解码将过程反转,还原为原始文本。
把文字编码成 Base64 时,取文字的原始字节,每 3 个字节一组,把每组 24 位映射成 Base64 64 字符表中的 4 个字符;末尾不足的分组用 = 补齐。例:"hello" 编码后是 "aGVsbG8=",解码 "aGVsbG8=" 会还原成 "hello"。
| 文字 | Base64 |
|---|---|
| a | YQ== |
| ab | YWI= |
| abc | YWJj |
| hello | aGVsbG8= |
| Hello, World! | SGVsbG8sIFdvcmxkIQ== |
不是。Base64 没有密钥——任何人都可以用同一套公开、标准化的字符表把它解码还原成原文。它只是改变数据在纯文本系统中的传输表示方式,不提供任何机密性,绝不应该用来保护敏感数据。
= 字符是填充符。Base64 总是把每 3 个输入字节转换成 4 个输出字符;如果输入长度不是 3 的倍数,最后一组会用一个或两个 = 补齐,让输出总长度始终是 4 的倍数。
每 3 个字节的输入会变成 4 个字符的输出,所以编码后的文本大约比原文大 33%。这个额外开销是用安全、可打印的 ASCII 字符表示任意二进制数据所要付出的代价。
可以。Base64 处理的是原始字节,因此可以编码图片、音频或任何二进制文件,不局限于文字。本工具接受文字输入,编码其 UTF-8 字节表示;若要编码任意二进制文件,需要能直接读取文件字节的工具。
本工具在浏览器内完成 UTF-8 文本的编码和解码,不直接接受二进制文件上传;解码非法的 Base64 文本时会提示错误,而不是输出部分或损坏的结果。
Sources: RFC 4648 - The Base16, Base32, and Base64 Data Encodings
最后更新: 2026-08-17
Base64只是把二进制内容表示成可传输的文本,任何人都能用同样方法解码。它适合在JSON、邮件或数据URL中搬运内容,却不能代替加密、签名或密码散列。不要因为字符串看起来杂乱就把密钥、令牌或个人资料直接公开。
编码与解码时要确认文本字符集和换行是否被改变。复制结果若缺少末尾填充符或混入空格,某些系统会拒绝解析。重要数据应在目标系统中做一次往返测试,确认解码后与原文完全一致。
在系统之间传递Base64文本时,最容易出错的往往不是编码按钮,而是双方对原始字符的解释不同。带重音的字母、中文、表情和换行都要先按同一字符编码变成字节,接收端再以同样方式还原;若一端把换行改写、删除末尾填充或把复制内容自动折行,解码虽可能成功,得到的文本却未必与原文逐字一致。还要区分标准Base64与面向网址或文件名的变体,它们使用的字符表和填充习惯可能不同。接口文档若指定了某一变体,应按文档处理,不能只因为字符串“看起来像Base64”就直接互换。
排查问题时可选一段包含空格、换行和非ASCII字符的已知文本,依次记录原文、字符编码、Base64结果与解码后的文本,再做往返比较。若字符串嵌入JSON、URL查询或数据URL,还要让外层格式完成自己的转义,避免把外层百分号编码或引号问题误诊为Base64错误。编码只改变表示方式,长度增加和可读性下降都不会提供机密性、完整性或发送者身份保证;敏感资料仍需采用经过批准的加密和访问控制,校验篡改则使用适当的摘要、认证码或签名机制。不要把真实令牌放入公开示例、错误日志或工单。若接口仍拒绝结果,应逐项核对媒体类型、外层引号、是否要求换行以及前缀是否属于数据本身,并用接收端官方示例作最小测试。不要通过反复删除末尾字符来碰运气,因为那会掩盖真正的格式约定。