CSV 格式详解:逗号、引号、换行是怎么转义的
CSV 字段含逗号、引号或换行时必须用双引号包裹,字段内引号写两遍。讲清 RFC 4180 规范与 Excel 打开乱码的解法。
一、基本规则
CSV(逗号分隔值)看似简单,实则有正式规范 RFC 4180:
- 每行一条记录,字段间用逗号分隔。
- 字段含逗号、双引号、换行时,整个字段必须用双引号包裹。
- 字段内的双引号写成两个双引号("" 转义)。
- 首行可以是表头。
例:字段值 He said "hi", ok 要写成 "He said ""hi"", ok"。
二、三个高频坑
- 换行不等于记录结束:被引号包裹的字段可以合法包含换行——很多解析器没处理,读到「半行」就报错。
- 编码乱码:Excel 打开 UTF-8 CSV 中文乱码,因为老版 Excel 默认按 ANSI 读。解法:文件头加 BOM(EF BB BF)。
- 分隔符地域差异:部分欧洲 Excel 用分号分隔(逗号是小数点),导出前确认目标环境。
三、与 JSON 怎么选
- CSV:平面表格数据,人类可读可 Excel 编辑,体积小。不支持嵌套。
- JSON:任意嵌套结构,程序处理方便,是 API 标准格式。
导出报表给业务方用 CSV(带 BOM),接口传数据用 JSON,各司其职。
四、程序处理建议
- 别手写 split(',') 解析:引号里的逗号会把你坑哭,用标准库(Python csv 模块等)。
- 生成时同样用库:自动处理转义、BOM。
- 大文件流式处理:逐行读写,别一次性读入内存。
在线体验
不用装任何环境,直接用本站JSON 格式化工具在线操作,数据都在浏览器本地处理,方便又安全。
常见问题
Excel 打开 CSV 中文乱码怎么办?
UTF-8 无 BOM 导致。用记事本另存为「带 BOM 的 UTF-8」,或生成时写入 EF BB BF 三个字节,Excel 就能正确识别。
CSV 字段里有换行符合法吗?
RFC 4180 允许:字段被双引号包裹时可以包含换行。但部分简陋解析器不支持,数据交换前最好清洗掉字段内换行。
CSV 能存空值吗?
可以,空字段直接写空(两个逗号之间什么都没有)表示 NULL/空。但「空字符串」和 NULL 在 CSV 层面无法区分,需业务侧约定。
