运营把 Excel 另存为 CSV 后上传,导入日志里第一条手机号是 ?13800138000,后面每条都带这个问号,校验全部不通过。用记事本打开文件,开头显示 。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,Excel 另存 CSV 时默认写 UTF-8 with BOM,那三个字节被导入程序按 GBK 解释,就成了  这样的前缀。它粘在第一个字段前面,按手机号写的正则自然匹配不上,看起来像数据本身错了。
「Excel 另存 CSV」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。报错里带路径的,先去看那个路径在不在、权限对不对。
xxd -l 6 users.csv
python3 -c "import csv;rows=list(csv.reader(open('users.csv',encoding='utf-8-sig')));print(rows[0][:2])"
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,用 xxd 看文件头 确认是不是 ef bb bf;导入时用 utf-8-sig 解码 让 BOM 自动被吃掉;拿不到源码就在上传后对首字段做一次 strip('\ufeff') 清洗;给运营一份导出模板 说明要选 CSV UTF-8 而不是普通 CSV。
最后用这个标准收尾,同一份文件重新导入 第一条手机号是纯数字 通过条数从 0 变成全量。
