症状:错位、乱码、导入失败
从 Excel 另存 CSV 喂给程序,转 JSON 后字段全串列、中文变问号、导入直接报错,基本逃不过三类问题:编码不对、分隔符不对、表头不干净。先别改代码,把文件本身理顺,后面联调一次过。
提示:用记事本打开 CSV 看一眼,乱码在源头文件里就能发现,别等进了程序再猜。
第一关:编码,中文乱码的根子
Excel 中文版默认存 ANSI(GBK),而程序多按 UTF-8 读取,错位第一步就埋了雷。另存时选 CSV UTF-8 格式;已经乱码的文件,先确认来源编码,再用乱码修复工具恢复,修好另存 UTF-8。
注意:UTF-8 文件开头的 BOM 可能让第一列表头多个隐形字符,解析前先去掉,否则第一个字段永远对不上。
第二关:表头,分隔符与脏数据
欧洲版 Excel 用分号分隔,WPS 导出可能混用制表符,转换前先确认分隔符。表头常见坑:合并单元格导出的空列、字段里自带的逗号没加引号、末尾多余空行。含逗号的字段必须用双引号包裹,这是 CSV 规范不是玄学。
| 现象 | 原因 | 解法 |
|---|---|---|
| 列数忽多忽少 | 字段内逗号未加引号 | 给含逗号字段加双引号 |
| 首列名多了怪字符 | UTF-8 BOM | 去 BOM 后重存 |
| 末尾多出空对象 | 文件末尾空行 | 删除空行再转 |
| 整列串到下一列 | 分隔符混用 | 统一分隔符后转换 |
第三关:转 JSON 直供接口
文件理顺后,用CSV 转 JSON 工具一键转换:指定分隔符、认准表头行,数字、日期类型按接口要求保留或转字符串。大文件先截前 20 行试转,格式确认无误再全量,避免反复返工。
校验:格式化对照收尾
转出的 JSON 贴到JSON 格式化工具排版校验,字段、层级一目了然;和接口文档的示例逐字段对照,类型错(字符串 vs 数字)是联调 400 的头号来源。对上了再发请求,联调成功率完全不同。