长风破浪会有时,直挂云帆济沧海。 —— 李白《行路难》
Base64在线编码解码工具
Base64编码 / 解码 / Base64URL / atob & btoa / UTF-8中文支持
输入
输出
什么是Base64?
Base64 是一种将二进制数据编码为 ASCII 字符串的编码方式,使用 A-Z、a-z、0-9、+、/ 共 64 个可打印字符,每 3 个原始字节编码为 4 个 Base64 字符(编码后体积膨胀约 33%)。JavaScript 中通过 atob() 解码、btoa() 编码,本工具底层使用相同 API,并内置了 UTF-8 字节处理,确保中文等非 ASCII 字符正确编解码。如需将图片转为 Base64,可使用图片转Base64工具;解码结果为 JSON 可继续用JSON格式化整理结构。
Base64 常见应用场景
- JWT Token 解析:JWT 的 Header 和 Payload 均为 Base64URL 编码,可直接粘贴解码查看内容。
- API 数据传输:在 JSON 中传递二进制数据时,先用 Base64 编码为字符串,再用JSON格式化工具查看整体结构。
- MIME 邮件附件:电子邮件协议只支持纯文本,附件通过 Base64 编码后嵌入邮件体传输。
- Data URI 内嵌:在 HTML/CSS 中以
data:image/png;base64,...格式内嵌小图标,减少 HTTP 请求(参见图片转Base64)。 - URL 安全传输:标准 Base64 的 +/ 在 URL 中有特殊含义,衍生出 Base64URL(用 -_ 替代 +/,省略尾部 =)。
常见问题
Base64 和 Base64URL 有什么区别?
Base64URL 是标准 Base64 的 URL 安全变体:将 + 替换为 -,/ 替换为 _,并省略结尾的 = 填充符。JWT Token 中的 Header 和 Payload 部分就使用了 Base64URL 编码。
为什么 atob() 解码中文会乱码?
浏览器原生 atob() 只能处理 Latin1 字符,无法直接解码 UTF-8 中文。正确的做法是先用 atob() 得到二进制字符串,再用 TextDecoder 按 UTF-8 解码。本工具已在底层封装了此逻辑,中文可直接正确解码。
Base64 编码后为什么会有 = 号?
Base64 以 3 字节为一组编码为 4 字符,当原文字节数不是 3 的倍数时,用 = 填充到 4 的倍数:余 1 字节补 2 个 =,余 2 字节补 1 个 =。解码时会自动忽略这些填充符。
Base64 是加密吗?
Base64 是一种编码方式而非加密,没有任何密钥参与,任何人拿到 Base64 字符串都可通过 atob() 直接还原原文。如需真正的加密保护,请使用对称加密工具。