文本 → CSV 转换器,免费

将表格型文本数据转换为 CSV 格式。自动检测分隔符、处理引号,并在下载前预览。

您的数据从不离开设备

关于 CSV 格式

CSV(Comma-Separated Values,逗号分隔值)是一种用于存储表格数据的简单文本格式。每行代表一条记录,值之间用逗号分隔。CSV 被电子表格、数据库和分析工具广泛支持。

为什么转换为 CSV?

常见问题

工具支持哪些分隔符?

它会自动检测制表符、空格、逗号、分号和竖线。您也可以定义单字符的自定义分隔符。

如何处理包含逗号的字段?

启用「将含逗号的字段加引号」选项,将它们用引号包起来,以符合 CSV 规范。

可以包含表头吗?

可以,如果您的第一行是列名,请启用「包含表头行」选项。

CSV简史:比定义它的规范更古老的格式

CSV是一种人人在用、却无人拥有的格式,其传承是非正式的。逗号分隔惯例最早有文献记载的用法可追溯至1972年,当时IBM Fortran(H扩展级)支持列表导向的输入/输出,其中逗号用作行内各值之间的分隔符。从20世纪70年代到80年代,每一款需要与其他工具交换数据的数据库、电子表格、统计软件包和记账应用程序,都独立地发明出了某种「以某字符分隔同行各值、以另一字符分隔各行」的变体。没有规范,没有管理机构,没有权威实现,只有最宽泛意义上的共识。

到21世纪初,这种混乱造成的代价已无法回避。IETF最终接受了一份规范:RFC 4180,「逗号分隔值(CSV)文件的通用格式和MIME类型」,由Yakov Shafranovich于2005年10月发布。RFC 4180篇幅短小,仅寥寥数页,将大多数人已达成共识的内容成文化:逗号作为字段分隔符,双引号作为包含逗号、引号或换行符的字段的可选封装字符,双写双引号("")作为在引用字段内转义字面引号的方式,CRLF作为行终止符,以及向IANA注册的MIME类型text/csv。规范还为MIME类型定义了一个可选的header参数,使发送方能够告知接收方第一行是否为标题行。

RFC 4180是信息性规范,而非严格标准,是否遵从完全自愿。但它为我们提供了一个参照点,是CSV最接近「正确」定义的东西。后来W3C发布的「网络表格数据与元数据模型」(CSVW,2015年)试图通过附加一个描述各列含义及解读方式的JSON附属文件来扩展CSV的元数据体系。CSVW被广泛引用,却鲜有实际部署。

「CSV」在现实中并不遵循RFC 4180的定义

任何曾经从陌生人那里接收过CSV文件的人都知道这个问题的形态。分歧可以从以下几个维度加以梳理:

BOM陷阱

这个问题值得单独成节,因为它是跨平台CSV痛苦中最常见的根源。Microsoft Excel不会自动识别UTF-8编码的CSV,除非文件以UTF-8字节顺序标记(BOM)开头:即三个字节EF BB BF,用以编码Unicode字符U+FEFF。没有BOM,Excel会用用户Windows区域设置的旧版代码页打开文件(西方为Windows-1252,日本为Shift_JIS,中国大陆为GBK)。任何非ASCII字符(重音字母、货币符号、表情符号、CJK字符)都会被乱码处理。

解决方案是在文件开头添加BOM。代价是其他所有工具都会被其破坏。Apple Numbers(较新版本之前)会在第一个单元格中将BOM显示为字面字符。许多命令行工具(awkcut、旧版sed)将BOM视为第一个字段的一部分,因此应该显示为name的标题行会显示为name。大多数JavaScript CSV解析器会剥离BOM;许多旧版Python csv模块工作流则不会(必须使用utf-8-sig编解码器打开文件)。由于在线工具无法知晓用户将用何种程序打开文件,省略BOM并告知Excel用户通过「数据→从文本/CSV」导入(该方式总是允许用户明确选择UTF-8)是合理的默认选择。

Excel至少提供四种「CSV」格式

Excel的「另存为」对话框提供了不止一种CSV变体,差异相当重要:

用户界面以四种不同方式标注了「CSV」,而实际文件内容却有实质性差异。这就是本转换器实际运作所处的现实环境。

为什么要进行文本→CSV的转换

大多数在线「CSV工具」运行的是反向操作:接收CSV,输出其他格式(JSON、HTML表格、SQL INSERT语句、可打印PDF)。本工具反向运行:接收杂乱文本,生成整洁CSV。适用场景包括:

Excel有时会静默地改写你的数据

一些CSV「地雷」甚至会让谨慎的用户中招:

本工具在CSV现代替代品中的定位

CSV之所以生命力持久,是因为它是文本,人类可以直接阅读。对于严肃的数据交换,多种格式在特定维度上已经取代了它:

对于面向开发者和办公室用户的免费在线转换器而言,CSV仍然是正确的输出格式,因为它是各处数据导入的通用语言。现代替代品已然存在,但尚未在收件箱中取代CSV。

更多问题

我是否应该在输出中添加UTF-8 BOM?

如果文件是为了在Windows上双击打开Excel,那么需要添加;若无BOM,Excel会用旧版代码页打开并乱码处理非ASCII文本。如果目标是其他任何程序(Apple Numbers、命令行脚本、网络上传表单),则省略BOM。最稳妥的方案是省略BOM,并告知Excel用户通过「数据→从文本/CSV」导入,在那里可以明确选择UTF-8。

我的CSV在Excel中每行只显示一个单元格,是什么原因?

几乎总是分隔符不匹配的问题。你所在的区域设置让Excel期望分号(欧洲大陆大部分地区),但文件使用的是逗号,或反之亦然。请通过「数据→从文本/CSV」而非双击打开文件,该向导允许明确选择分隔符。或者在Excel的「另存为」菜单中选择与本地分隔符匹配的变体来保存文件。

TSV和CSV有什么区别?

TSV使用制表符而非逗号作为分隔符,有其专属的MIME类型text/tab-separated-values和IANA注册。TSV的优势在于现实世界的数据很少包含字面制表符,因此几乎不需要引用;缺点是制表符在文本编辑器中不可见,且复制粘贴行为因工具而异。CSV的引用机制使其能够安全处理包含分隔符的字段;TSV则主要通过完全避开这个问题来解决它。

有没有可以在分享文件前运行的CSV校验工具?

有,在命令行中可使用csvkitcsvclean来报告列数不正确的行;Frictionless Data的frictionless CLI可依据可选模式进行验证。在浏览器端,PapaParse可逐行报告解析错误。在实践中,针对RFC 4180(CRLF行尾、双写引号转义)的严格验证并不多见,大多数解析器接受任何常见变体。

相关工具