CSV
CSV(Comma-Separated Values,逗号分隔值)是一种以纯文本存储二维表格数据的格式。文件的每一行对应表格的一行记录,行内的字段用逗号分隔,通常第一行作为表头(列名)。因为它只是文本,几乎所有语言、数据库和表格软件都能读写,常用于数据导出、导入和系统间的数据交换。
CSV 没有官方强制标准,最接近事实标准的是 RFC 4180,其中几条规则容易被忽略:
- 字段本身含逗号、双引号或换行时,整个字段要用双引号包裹,如
"Smith, John"; - 字段内的双引号通过写成两个双引号来转义,如
"He said ""hi"""; - 换行按规范用
CRLF,但实际中LF也很常见。
常见误区:一是把它当成「一定用逗号」,其实分隔符可能是分号或制表符(后者常叫 TSV);二是 CSV 不保存数据类型,所有值都是文本,007、日期、超长数字在被程序或 Excel 解析时可能丢失前导零或被转成科学计数法;三是文件本身不带编码信息,UTF-8 与 GBK 混用是乱码的主因,建议统一 UTF-8。需要把结构化数据转成这种表格文本时,可以用站内的 json-to-csv 工具。
常见问题
字段内容里本身就有逗号或换行,会不会把列冲乱?
不会,只要按 RFC 4180 把该字段用双引号包裹起来即可,双引号内的逗号和换行都会被当作字段内容而非分隔符。如果字段里还含双引号,就把它写成两个双引号来转义。
CSV 和 Excel 的 .xlsx 有什么区别?
为什么用 Excel 打开 CSV 会乱码,或者数字变了样?
乱码通常是编码不匹配,UTF-8 文件被当成 GBK 解析,加个 BOM 或显式选编码可解决。数字变样是因为 CSV 不带类型,Excel 会自动把长数字转成科学计数法、把 007 的前导零去掉,需要保留时应作为文本导入。