python -c "print(open('data.csv','rb').read(4))"
python -c "import pandas as pd; print(pd.read_csv('data.csv', encoding='utf-16').head())"
file -i data.csv

运营从 Excel 导出的 CSV 用 Python 按 utf-8 打开,首行是 \ufeff商品名,第二行开始每隔一个字符夹一个空字节,字段全解析错。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:Excel 的 Unicode 文本导出是 UTF-16 LE 加 BOM,每个 ASCII 字符后面跟一个零字节,按 UTF-8 解码就成了乱码加空字符。

围绕「UTF-16 CSV」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:用 encoding='utf-16' 让 Python 自己处理 BOM;或先读前两字节判断 FF FE 和 FE FF;统一让导出方选 CSV UTF-8 格式;解析前去掉残留的 BOM 字符和空字节。

确认没问题再收工,列名和内容正常显示 字段数与表头一致。

作者 9823189