联系人 CSV (.csv)
RFC 标准逗号分隔值 (CSV) 是一种用于表格数据的广泛使用的纯文本格式,其中每一行代表一条数据记录,字段由分隔符字符隔开。
将 XLSX 转换为 CSV
免费的浏览器端 XLSX 转 CSV 转换器。在您的设备上即时转换文件。
在线压缩 CSV
隐私保护 - 文件不会离开您的设备
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 CSV 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 CSV 文件:
十六进制签名 (偏移量 0):
没有固定签名ASCII 表示形式: 文本字节,编码可能不同
标准化: RFC 4180 / IETF
技术规格
| 容器架构 | 表示表格数据行和列的分隔型纯文本文件 |
| 压缩方式 | Gzip / Deflate 可对重复的表格记录实现 85%-95% 的压缩率 |
| 字节序 | UTF-8 文本流(Excel 使用可选的 UTF-8 BOM EF BB BF) |
| 色彩空间 | 不适用 |
| 通道与结构 | 由 CRLF 分隔的行记录,列之间由逗号分隔 |
| 最大尺寸 | 无限制;可流式处理数吉字节的数据,无需将整个文件加载到内存中 |
| 透明度 | 不适用 |
| 流式传输与渐进式加载 | 所有数据管道均支持原生的逐行流式处理 |
技术对比矩阵:CSV 对比同类产品
| 技术属性 | CSV (当前) | Excel (XLSX) | Parquet | JSON |
|---|---|---|---|---|
| 文件类型 | 纯文本平面表格 | 压缩的 XML 电子表格 | 二进制列式存储 | 层级文本 |
| 多工作表 | 否(仅限单个平面表格) | 是(多个工作簿和工作表) | 基于分区的存储 | 嵌套数组和对象 |
| 数据类型 | 无类型的原始文本 | 带类型的单元格、公式、格式 | 严格的二进制列类型 | 原始类型(字符串、数字、布尔值) |
| 大数据分析 | 慢(需要线性读取每一行) | 不适合大数据 | 极快(列修剪和谓词下推) | 中等 |
常见损坏模式与十六进制恢复指南
列向右偏移或行数不匹配。
根本原因: 包含未转义逗号且没有用引号包裹的文本字段。
恢复方法: RFC 4180 要求包含逗号的字段用双引号包裹:"Smith, John"。
在 Excel 中带音符的字符呈现为奇怪的符号(例如显示为 é 而不是 é 的乱码)。
根本原因: Excel 在打开 UTF-8 CSV 时错误地假设为旧版 Windows ANSI/CP1252 字符编码。
恢复方法: 在文件开头前置 3 字节的 UTF-8 字节顺序标记 (0xEF 0xBB 0xBF)。
安全分析与解析器攻击向量
CSV 文件可直接在 Excel 和 Google Sheets 等电子表格软件中打开,从而使用户面临公式注入(CSV 注入)攻击。
已知攻击向量
- 公式注入:以 '='、'+'、'-' 或 '@' 开头的单元格可执行电子表格宏或 DDE 命令(例如 '=cmd|' /C calc'!A0')。
- 通过点击 HYPERLINK() 公式在用户点击时将敏感单元格数据发送到远程攻击者服务器的数据渗漏。
防御性最佳实践: 将用户数据导出为 CSV 时,在任何以 '='、'+'、'-' 或 '@' 开头的单元格前加上单引号 (') 或制表符,以强制在 Excel 中进行纯文本渲染。
历史渊源与里程碑
核心优势与特点
- 极致简洁:可在任何文本编辑器中阅读,并可导入每个数据库和电子表格中。
- 极快的逐行流式传输,无需构建完整的内存 DOM。
- 极小的开销:没有冗长的标签语法或架构定义。
技术局限与劣势
- 没有标准的数据类型:数字、日期、布尔值和文本全部作为原始字符串存储。
- 不支持多工作表、单元格格式、公式或元数据。
- 分隔符冲突(文本中的逗号、欧洲语言区域的小数逗号)会导致频繁的解析错误。
趣味技术冷知识
- 在许多使用逗号作为小数点的欧洲国家,通常使用分号 (;) 代替逗号作为 CSV 分隔符。
- 微软 Excel 历史上需要 UTF-8 BOM (0xEF 0xBB 0xBF) 来正确显示非 ASCII 带音符的字符。
- 2020 年,英国国家医疗服务体系 (NHS) 因将数据导入到行数上限为 65,536 的过时 Excel 电子表格格式中,导致近 16,000 条 COVID-19 接触者追踪记录丢失,轰动一时。
常见技术问题
什么是 RFC 4180?
RFC 4180 是 IETF 针对 CSV 的官方标准。它规定包含逗号、换行符或双引号的字段必须用双引号括起来,并且内部引号必须通过将其加倍("")来转义。
为什么 CSV 文件在 Excel 中打开时字符会损坏?
旧版本的 Microsoft Excel 在直接打开 CSV 文件时,默认使用本地 Windows 代码页(如 Windows-1252)而不是 UTF-8。在文件开头添加 UTF-8 BOM(字节顺序标记)可强制 Excel 正确解码 UTF-8。
什么是 CSV 注入(公式注入)?
当不受信任的用户输入包含以“=”、“+”、“-”或“@”开头的公式触发字符,并被导出到电子表格文件时,就会发生 CSV 注入。在 Excel 等软件中打开文件后,电子表格会自动执行公式或动态数据交换(DDE)命令,可能运行系统命令或泄露数据。
相关的 CSV 转换对
将 Excel 工作表转换为 CSV 表格,可提取原始表格数据,并保存为兼容多种软件的常用文本格式。
将简单的文本格式 CSV 文件转换为功能丰富的 XLSX 电子表格,可实现高级数据样式设定、公式应用和多工作表支持。
将扁平文本文件转换为结构化的关系型数据库,使您能够运行快速查询并管理复杂的数据关系。
将关系型数据库备份脚本转换为扁平的表格文件,以便进行简单的数据分析和报告。
将分层 HDF5 数据集转换为扁平的遥测 CSV 文件,将复杂的科学多维记录转换为简单的行和列,以便进行电子表格分析。
将多维 NetCDF 科学网格转换为扁平的遥测 CSV 文件,使复杂的气候和海洋数据能够在基础电子表格软件中读取。
将 vCard 文件转换为联系人 CSV,将分层联系人卡片转换为平铺的电子表格行,以便轻松导入数据库。