Base64 解码
免费在线 Base64 解码工具,将 Base64 字符串还原为原始文本,支持多字符集,适合接口排查和日志还原。
相关推荐
什么是 Base64 解码?
Base64 解码是 Base64 编码的逆过程:将 Base64 字符串(如 SGVsbG8=)还原为原始的文本或二进制数据。Base64 是一种将二进制数据用 64 个可打印 ASCII 字符(A-Z、a-z、0-9、+、/)表示的编码方法,定义在 RFC 4648 标准中。
**解码的常见用途:** Base64 编码广泛用于 HTTP Basic Authentication 头、JWT Token 的 payload 段、API 响应字段、Data URI(如 data:image/png;base64,...)、邮件附件 MIME 编码、数据库 BLOB 字段存储等场景。解码这些内容是日常开发和调试的高频操作。
**解码的关键步骤:** Base64 解码时需要正确处理:①字符集(UTF-8 用于多字节字符如中文,ASCII 用于纯英文);②Padding(=)填充,长度必须是 4 的倍数;③URL-safe 变体(- 和 _ 替代 + 和 /);④换行和空格(标准 Base64 不含换行,MIME 变体每 76 字符换行)。
**浏览器原生支持:** 浏览器原生提供 `atob()` 函数用于 Base64 解码,但仅支持 Latin-1(ISO-8859-1)字符集。处理中文等多字节字符时需要先用 `TextDecoder('utf-8')` 转换 UTF-8 字节序列。本工具自动处理这些细节,支持 UTF-8 解码,无需手动转换。
**本地处理隐私:** 所有解码操作在浏览器内完成,输入的 Base64 字符串不上传任何服务器,可放心用于解码 API 响应中的敏感 token、日志中的用户数据等。
适用场景
- 解码接口返回的 Base64 字段查看原始内容
- 还原日志中的 Base64 编码数据
- 恢复配置文件中的 Base64 编码值
- 排查 Base64 解码报错原因(填充缺失、非法字符等)
- 解码 JWT Token 的 header 和 payload 段查看用户信息
- 解码 HTTP Basic Authentication 凭证查看用户名密码
- 还原 Data URI Scheme 中的图片或资源数据
使用方法
- 粘贴需要解码的 Base64 字符串
- 选择字符集(UTF-8/ASCII/ISO-8859-1)
- 工具自动进行 Base64 解码并显示结果
- 复制解码结果用于后续调试或文档记录
功能特点
- 实时双向转换:输入即解码,300ms 防抖延迟,无需手动触发
- 多字符集支持:UTF-8、ASCII、ISO-8859-1 三种字符集,覆盖中文/英文/多语言场景
- URL-safe Base64 兼容:自动处理 - 和 _ 字符替换,支持无 Padding 格式
- 非法字符检测:解码失败时提示具体错误位置,快速定位格式问题
- 一键复制与下载:支持复制解码结果到剪贴板,或下载为 .txt 文本文件
- 自动 Padding 处理:自动补全或去除 = 填充字符,无需手动调整长度
- MIME 变体支持:识别并处理每 76 字符换行的 MIME Base64 格式(邮件附件常用)
代码示例
JavaScript:浏览器原生 atob() 解码(仅支持 Latin-1)
javascript使用浏览器原生 API 解码纯英文 Base64。处理 UTF-8 中文需要用 TextDecoder。
// 标准 Base64 解码(纯英文 / Latin-1)
function b64Decode(str) {
try {
return atob(str);
} catch (e) {
return '解码失败: ' + e.message;
}
}
console.log(b64Decode('SGVsbG8gV29ybGQ=')); // "Hello World"
// UTF-8 中文解码(推荐)
function b64DecodeUtf8(str) {
const binary = atob(str);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
return new TextDecoder('utf-8').decode(bytes);
}
console.log(b64DecodeUtf8('5LiW55WM')); // "中文"Python:base64 库解码(含 URL-Safe)
pythonPython 标准库 base64 同时支持 Standard 和 URL-Safe 两种模式,可灵活切换。
import base64
# Standard 解码
encoded = 'SGVsbG8g5LiW55WM' # "Hello 中文"
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 中文
# URL-Safe 解码
url_encoded = 'SGVsbG8g5LiW55WM'
decoded = base64.urlsafe_b64decode(url_encoded + '=' * (4 - len(url_encoded) % 4))
print(decoded.decode('utf-8'))
# MIME 解码(去除换行后)
mime_encoded = 'SGVs\nbG8g\nV29y\nbGQ='
decoded = base64.b64decode(mime_encoded.replace('\n', '')).decode('utf-8')
print(decoded) # Hello World
# 自动忽略非法字符
import re
cleaned = re.sub(r'[^A-Za-z0-9+/=]', '', encoded)
decoded = base64.b64decode(cleaned).decode('utf-8')
print(decoded)Java:java.util.Base64 解码(多种变体)
javaJava 标准库提供完整 Base64 支持,包括 RFC 4648 / URL-Safe / MIME 三种变体。
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64DecodeExample {
public static void main(String[] args) {
String encoded = "SGVsbG8g5LiW55WM"; // "Hello 中文"
// Standard 解码
byte[] decoded = Base64.getDecoder().decode(encoded);
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// URL-Safe 解码
byte[] urlDecoded = Base64.getUrlDecoder().decode(encoded);
System.out.println(new String(urlDecoded, StandardCharsets.UTF_8));
// MIME 解码(自动处理换行)
String mime = "SGVs\nbG8g\nV29y\nbGQ=";
byte[] mimeDecoded = Base64.getMimeDecoder().decode(mime);
System.out.println(new String(mimeDecoded, StandardCharsets.UTF_8));
// 错误处理
try {
Base64.getDecoder().decode("invalid@base64");
} catch (IllegalArgumentException e) {
System.err.println("解码失败:" + e.getMessage());
}
}
}常见问题
为什么 Base64 解码时会报 InvalidCharacterError?
常见原因包括:混入了空格/换行/引号等非法字符、Padding(=)数量不正确、或使用了 URL-safe 变体(-/_ 替代 +//)。建议先用 Base64 清理工具预处理再解码。
解码后看到乱码怎么办?
可能是字符集选择错误。如果原文是中文,请选择 UTF-8 字符集;如果是纯英文或二进制数据,可尝试 ASCII 或 ISO-8859-1。
URL-safe Base64 和普通 Base64 解码有什么区别?
URL-safe Base64 使用 - 和 _ 替代 + 和 /,且通常省略末尾的 = Padding。解码前需要将 -/_ 还原为 +//,并补全正确的 Padding。
Base64 解码适合接口联调吗?
非常适合。很多 API 响应、OAuth Token、回调参数和中间件日志都会把内容做 Base64 封装,解码后可直接查看原始数据。
如何解码 JWT Token 的 header 或 payload?
JWT 使用 Base64URL 编码(URL-Safe 变体)。粘贴 JWT 第一段(header)或第二段(payload),选择 URL-Safe 模式即可解码。注意第三段是签名,不应单独解码验证。
支持解码大文件吗?
工具无显式大小限制,但浏览器对超大文本处理性能下降。解码 10MB 以上 Base64 字符串可能导致页面卡顿,建议分段解码或使用 Node.js / Python 脚本。
Padding 缺失怎么办?
工具会自动补全 Padding(= 字符)到 4 的倍数。URL-safe 变体常省略 padding,工具会智能识别并补全。
Base64 解码是解密吗?
不是。Base64 是编码(可逆),不是加密(不可逆)。任何人都可以解码 Base64。如果是敏感数据,应使用 AES 等真正的加密方案。
浏览器原生 atob 函数和工具解码效果一样吗?
对纯英文相同,但浏览器原生 atob() 只支持 Latin-1 字符集,无法直接处理 UTF-8 中文。本工具自动处理 UTF-8 字节转换,等价于 atob() + TextDecoder 的组合。
解码结果支持导出吗?
支持。一键复制到剪贴板,或下载为 .txt 文本文件。下载的文件使用 UTF-8 编码,可被任何文本编辑器或 Excel 打开。
术语表
- Base64
- 基于 64 个可打印 ASCII 字符的二进制到文本编码方法,定义在 RFC 4648 中。每 3 字节编码为 4 字符,体积增大约 33%。
- atob()
- 浏览器原生提供的 Base64 解码函数(ASCII to Binary)。仅支持 Latin-1 字符集,处理 UTF-8 中文需配合 TextDecoder 使用。
- Padding(填充)
- Base64 编码末尾用 = 字符补齐到 4 的倍数。解码时通常自动去除 padding。URL-safe 变体常省略 padding。
- URL-Safe Base64
- RFC 4648 §5 定义的 URL 安全变体,用 - 和 _ 替代 + 和 /,避免 URL 编码问题。常用于 JWT、OAuth PKCE 等场景。
- MIME Base64
- RFC 2045 规定的每 76 字符插入 CRLF 换行的 Base64 变体,主要用于电子邮件附件传输。
- UTF-8
- Unicode 字符集的可变长编码,中文 3 字节、英文 1 字节。Base64 解码时需指定 UTF-8 才能正确还原多字节字符。
- InvalidCharacterError
- 浏览器 atob() 在遇到非 Base64 字符(如空格、换行、中文)时抛出的错误。提示输入包含非法字符。
- Latin-1 (ISO-8859-1)
- 单字节字符集,覆盖西欧语言。浏览器原生 atob/btoa 只支持这个字符集,无法直接处理 UTF-8 中文。
Base64 三种变体对比
解码前先识别输入的 Base64 变体类型,选择对应模式以避免乱码或报错。
| 特性 | Standard | URL-Safe | MIME |
|---|---|---|---|
| 特殊字符 | + / | - _ | + / |
| Padding(=) | 使用 | 通常省略 | 使用 |
| 换行 | 无 | 无 | 每 76 字符换行 |
| 标准 | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| 典型场景 | Data URI、通用编码 | JWT、URL参数、文件名 | 邮件附件、SMTP传输 |
| 解码注意 | 需补全 Padding | 先替换 -_ 为 +/ 再解码 | 需去除换行后解码 |
5 种 Base64 解码常见错误对照表
遇到解码错误时,按下表快速定位原因。
| 错误类型 | 可能原因 | 解决方法 |
|---|---|---|
| InvalidCharacterError | 包含空格、换行或非 Base64 字符 | 清理输入字符串或使用 Base64 Clean 工具 |
| 解码后乱码 | 字符集选择错误(中文用了 Latin-1) | 切换为 UTF-8 字符集 |
| URL 参数中报错 | 使用了 URL-Safe 字符(-_)但按标准解码 | 先替换 -_ 为 +/ 再解码 |
| Padding 不对 | 长度不是 4 的倍数 | 补全 = 字符至长度 % 4 = 0 |
| 空字符串 | 输入只有空白或换行 | 清除空白后重新输入 |
Authoritative References
- 安全字符串比较
- 二进制编码解码
- 凯撒密码
- 摩尔斯电码
- 十六进制编码解码
- 视频转 Base64
- Base64 转视频
- 图片转 Base64
- Base64 转图片
- 文本转 Base64
- Base64 转文本
- 文件哈希校验
- 文件转 Base64
- Base64 转文件
- 音频转Base64
- Base64转音频
- AES 加密解密
- DES 加密解密
- Base32 编码解码
- Base58 编码解码
- Base64 编码
- Base64 解码
- Base64 比较
- Base64 拆分
- Base64 多行合并
- Base64 格式化
- Base64 格式校验
- Base64 批量编码
- Base64 批量解码
- Base64 清理
- Base64 填充处理
- Base64 长度统计
- Base64 转十六进制
- Base64 DataURL 转换
- Base64-Hex 互转
- Base85 编码解码
- HMAC 生成与验证
- PBKDF2 密钥派生
- MD5 哈希值
- SHA-256 哈希
- SHA1 哈希
- SHA512 哈希
- JWT 解码、验证与生成
- HTML 编码解码
- Unicode 转义
- URL 编码
- URL Safe Base64
- MIME Base64
- Java 代码混淆
- JavaScript 代码混淆
- PHP 混淆
- Python混淆