如何将 Base64 解码为 CSV
- 把 Base64 粘贴到 输入 · Base64。页面打开时会加载一个简短的示例。
- 在 输出 · 文本 中检查各行。如果分隔符、引号或带重音的字母看起来不对,在用其他程序打开文件之前你就能发现。
- 如果字符显示为
�,把 字符集 设为导出文件的编码,旧版 Windows 软件导出的文件通常是 Windows-1252。 - 点击 下载。如果解码后的数据看起来是逗号分隔的行,状态行会显示 CSV,文件保存为
decoded.csv。较短的文件以及用分号或制表符分隔的文件会被识别为文本,保存为decoded.txt;把它们改名为.csv即可。
无论你为预览选择了什么字符集,下载写出的都是未经改动的解码字节。
示例
示例 aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo= 解码后是:
id,name,email
1,Ada,ada@example.com
2,Linus,linus@example.com
注意开头:aWQs 就是 id,。CSV 导出不像文件格式那样有统一的前缀,但有几种模式可以帮你判断:
| Base64 开头 | 含义 |
|---|---|
77u/ | UTF-8 字节顺序标记,Excel 的“CSV UTF-8”导出通常带有它 |
//4 | UTF-16LE 字节顺序标记,“Unicode 文本”导出(制表符分隔)通常带有它 |
UEsDB | ZIP 容器:XLSX 工作簿,不是 CSV |
H4sI | gzip 压缩的数据;请用 gzip Base64 解码器 解码 |
Base64 CSV 文件从哪里来
报表和分析类 API 经常把导出文件作为 JSON 响应中的 Base64 字段返回,因为 JSON 无法容纳原始文件字节。webhook 和消息队列对附件也是这样处理的,自动发送的邮件则以 MIME Base64 部分携带 CSV 附件;邮件解码器 可以从原始邮件中提取它们。Git 托管平台的 API 以带换行的 Base64 返回文件内容,本解码器会跳过这些换行。
如果 JSON 响应中有多个编码字段,解码 JSON 中的 Base64 可以一次性全部找出来。
用 Excel 打开解码后的文件
CSV 没有声明字符集的文件头,所以电子表格程序只能猜:
- 带 UTF-8 BOM(Base64 以
77u/开头)时,双击文件打开,Excel 就能正确读取重音字符和非拉丁文字。77u/aWQ7bmFtZTtjaXR5CjE7Wm/DqztLw7Zsbgo=就是这样的文件,其中的Zoë和Köln完好无损。 - 不带 BOM 时,Windows 版 Excel 会使用系统的旧式代码页,UTF-8 文本会变成
Zoë。请不要双击,改用“数据 > 从文本/CSV”并选择 UTF-8。 - 用分号代替逗号 在以逗号作为小数点的国家很常见。只有当系统的列表分隔符是分号时,Excel 才能正确打开这类文件;否则请使用导入对话框并设置分隔符。
在代码中将 Base64 转为 CSV
import base64, csv, io
s = "aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo="
raw = base64.b64decode(s)
with open("export.csv", "wb") as f:
f.write(raw)
rows = list(csv.reader(io.StringIO(raw.decode("utf-8-sig"))))
rows[1] # ['1', 'Ada', 'ada@example.com']
utf-8-sig 会在有 BOM 时去掉它,没有时也不会造成影响。在命令行中,base64 -d export.b64 > export.csv 与下载按钮的效果相同。流式处理大文件的方法见 Python 中的 Base64。
常见问题
怎么把 Base64 转换成 CSV 文件?
把 Base64 粘贴到上方,点击 下载。如果工具识别出这些行是 CSV,文件会保存为 decoded.csv;否则保存为 decoded.txt,直接改名为 .csv 即可,内容不会变。
为什么用 Excel 打开 CSV 时带重音的字符显示不对?
对于没有字节顺序标记(BOM)的 CSV 文件,Windows 版 Excel 会按旧式代码页读取。请通过“数据 > 从文本/CSV”导入,并选择 UTF-8(65001),或者让发送方导出带 BOM 的“CSV UTF-8”。
我的 Base64 以 UEsDB 开头,这是 CSV 吗?
不是,这是 ZIP 容器,也就是 XLSX 工作簿或压缩后的导出文件。电子表格请用 Base64 转 Excel,压缩包请用 Base64 转 ZIP。
有大小限制吗?
没有固定限制。解码在你的浏览器中进行,所以超大导出文件只受设备内存限制;对于几 GB 的文件,用命令行的 base64 -d 更实际。