网络工作组 Y. Shafranovich 征求意见:4180 SolidMatrix Technologies, Inc. 类别:信息 2005 年 10 月 逗号分隔值 (CSV) 文件的通用格式和 MIME 类型 本备忘录的状态 本备忘录为互联网社区提供信息。它 不指定任何种类的互联网标准。本文件的分发 备忘录无限制。 版权声明 版权所有 (C) 互联网协会 (2005)。 抽象的 本 RFC 记录了逗号分隔值 (CSV) 使用的格式 文件并注册相关的 MIME 类型“text/csv”。 目录 1. 引言................................................................2 2. CSV 格式的定义 ..................................................2 3. text/csv 的 MIME 类型注册 ......................................4 4. IANA 注意事项 ..................................................5 5. 安全注意事项..................................................5 6. 致谢 ..................................................................6 7. 参考文献................................................................6 7.1. 规范性引用文件 ..................................................6 7.2. 参考资料 ..................................................6 Shafranovich 信息 [第 1 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 1. 简介 逗号分隔值格式 (CSV) 用于交换 并在各种电子表格程序之间转换数据 一段时间。令人惊讶的是,虽然这种格式非常常见,但它 从未正式记录过。此外,尽管 IANA MIME 注册树包括注册 “text/tab-separated-values”类型,从来没有 MIME 类型 在 IANA 注册 CSV。与此同时,各种程序和 操作系统已经开始使用不同的 MIME 类型来实现这一点 格式。本 RFC 记录了逗号分隔值的格式 (CSV)文件并正式注册 CSV 的“text/csv”MIME 类型 按照 RFC 2048 [1] 。 2. CSV 格式的定义 虽然针对 CSV 格式(例如 [4]、[5]、[6] 和 [7]),没有正式的 现有的规范允许各种各样的 CSV 文件的解释。本节记录了 似乎大多数实现都遵循: 1. 每条记录位于单独的一行上,由一条线分隔 换行符(CRLF)。例如: aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF 2. 文件中的最后一条记录可能有结束行,也可能没有 中断。例如: aaa,bbb,ccc CRLF zzz,yyy,xxx 3. 可能有一个可选的标题行作为第一行出现 文件的格式与正常记录行相同。这 标题将包含与文件中的字段相对应的名称 并且应包含与记录中相同数量的字段 文件的其余部分(是否存在标题行 应该通过此可选的“header”参数来指示 MIME 类型)。例如: field_name,field_name,field_name CRLF aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF Shafranovich 信息 [第 2 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 4. 在标题和每条记录中,可能有一个或多个 字段,以逗号分隔。每行应包含相同的 文件中字段的数量。空格被视为部分 字段的最后一个字段不应被忽略。 记录后面不能跟逗号。例如: aaa,bbb,ccc 5. 每个字段可以或不可以用双引号括起来(但是 有些程序(例如 Microsoft Excel)不使用双引号 完全没有)。如果字段没有用双引号括起来,则 字段内不能出现双引号。例如: "aaa","bbb","ccc" CRLF zzz,yyy,xxx 6. 包含换行符(CRLF)、双引号和逗号的字段 应该用双引号括起来。例如: "aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx 7. 如果使用双引号括住字段,则双引号 出现在字段内部的字符必须通过在其前面加上 另一个双引号。例如: "aaa","b""bb","ccc" ABNF 语法 [2] 如下所示: 文件 = [标题 CRLF] 记录 *(CRLF 记录) [CRLF] 标题 = 名称 *(逗号名称) 记录 = 字段 *(逗号字段) 名称 = 字段 字段 = (转义 / 非转义) 转义 = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE 非转义 = *TEXTDATA 逗号 = %x2C CR = %x0D ;根据 RFC 2234 第 6.1 节 [2] Shafranovich 信息 [第 3 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 DQUOTE = %x22 ;按照 RFC 2234 第 6.1 节 [2] LF = %x0A ;按照 RFC 2234 第 6.1 节 [2] CRLF = CR LF ;根据 RFC 2234 [2] 第 6.1 节 文本数据 = %x20-21 / %x23-2B / %x2D-7E 3. text/csv 的 MIME 类型注册 本节提供媒体类型注册申请(按照 RFC 2048 [1]. 收件人:ietf-types@iana.org 主题:MIME 媒体类型 text/csv 的注册 MIME 媒体类型名称:text MIME 子类型名称:csv 必需参数:无 可选参数:charset、header CSV 的常见用法是 US-ASCII,但定义了其他字符集 由 IANA 为“文本”树指定的 “字符集”参数。 “header”参数表示是否存在 标题行。有效值为“present”或“absent”。 选择不使用此参数的实现者必须 自行决定是否存在标题行。 编码注意事项: 根据 RFC 2046 [3] 第 4.1.1 节的规定,此媒体类型使用 CRLF 表示换行符。但是,实现者应该注意 一些实现可能使用其他值。 安全注意事项: CSV 文件包含被动文本数据,不应构成任何 风险。然而,理论上,恶意二进制文件 可能包含数据以利用潜在的缓冲区溢出 在处理 CSV 数据的程序中。此外,私有数据 可以通过这种格式共享(当然适用于任何文本 数据)。 Shafranovich 信息 [第 4 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 互操作性注意事项: 由于缺乏单一规范,存在相当多的 实现之间的差异。实现者应该“ 做事要保守,接受要自由 其他”(RFC 793 [8])。尝试 常见的定义可在第2节找到。 实现决定不使用可选的“标题” 参数必须自行决定标头是否 缺席或存在。 已发布规范: 尽管各种程序都存在许多私有规范 和系统,对此没有单一的“主”规范 格式。在第 3.1 节中可以找到一个通用的定义。 2. 使用此媒体类型的应用程序: 电子表格程序和各种数据转换实用程序 附加信息: 魔法数字:无 文件扩展名:CSV Macintosh 文件类型代码:TEXT 如需更多信息,请联系以下人员和电子邮件地址: 雅科夫·沙弗拉诺维奇 预期用途:通用 作者/变更控制者:IESG 4. IANA 注意事项 IANA 已使用以下方式注册了 MIME 类型“text/csv” 本文件第 3 部分提供的应用程序。 5. 安全注意事项 请参阅上文第 3 节的讨论。 Shafranovich 信息 [第 5 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 6. 致谢 作者要感谢 Dave Crocker、Martin Duerst 和 Joel M. 哈尔彭 (Halpern)、克莱德·英格拉姆 (Clyde Ingram)、格雷厄姆·克莱恩 (Graham Klyne)、布鲁斯·利利 (Bruce Lilly)、克里斯·利利 (Chris Lilley) 和 IESG 成员提出的有益建议。 感谢 Dave 对 ABNF 语法的帮助。 作者还要感谢 Henrik Lefkowetz、Marshall Rose、 以及 xml.resource.org 上的人们提供的许多工具 用于准备 RFC 和互联网草案。 特别感谢 LTS 7. 参考文献 7.1. 规范性引用 [1] Freed, N.、Klensin, J. 和 J. Postel,“多用途互联网 邮件扩展 (MIME) 第四部分:注册程序”,BCP 13,RFC 2048,1996年11月。 [2] Crocker, D. 和 P. Overell,“增强型 BNF 语法 规范:ABNF”,RFC 2234,1997 年 11 月。 [3] Freed, N. 和 N. Borenstein,“多用途互联网邮件 扩展(MIME)第二部分:媒体类型”,RFC 2046,11 月 1996 年。 7.2. 参考资料 [4] Repici, J.,“操作方法:逗号分隔值 (CSV) 文件 格式”,2004, 。 [5] Edoceo, Inc.,“CSV 标准文件格式”,2004 年, 。 [6] Rodger, R. 和 O. Shanaghy,“Ricebridge CSV 文档 经理”,2005 年 2 月, 。 [7] Raymond,E.,《Unix编程艺术》,第5章,2007年9月 2003年, 。 [8] Postel,J.,“传输控制协议”,STD 7,RFC 793, 1981 年 9 月。 Shafranovich 信息 [第 6 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 作者地址 雅科夫·沙夫拉诺维奇 SolidMatrix 技术公司 电子邮件: ietf@shaftek.org 网址:http://www.shaftek.org Shafranovich 信息 [第 7 页] RFC 4180 CSV 文件的通用格式和 MIME 类型 2005 年 10 月 完整版权声明 版权所有 (C) 互联网协会 (2005)。 本文件受以下权利、许可和限制的约束 载于 BCP 78,除其中规定外,作者 保留其所有权利。 本文件及其所含信息均以 “按原样”基础和贡献者,他/她所代表的组织 或由互联网协会和互联网赞助(如果有) 工程任务组否认所有明示或暗示的保证, 包括但不限于任何保证,使用 本文中的信息不会侵犯任何权利或任何默示的 适销性或特定用途适用性的保证。 知识产权 IETF 对任何 知识产权或其他可能被主张的权利 涉及所述技术的实施或使用 本文件或任何根据该等权利而许可的范围 可能可用,也可能不可用;也不代表它已经 未独立努力识别任何此类权利。信息 关于 RFC 文件中权利的程序可以 在 BCP 78 和 BCP 79 中发现。 向 IETF 秘书处提交的知识产权披露副本以及任何 许可证的提供保证,或 试图获得使用 本协议的实施者或使用者享有的此类所有权 可以从 IETF 在线 IPR 存储库获取规范 http://www.ietf.org/ipr。 IETF 邀请任何感兴趣的人士向其通报任何 版权、专利或专利申请,或其他专有 这些权利可能涵盖实施 本标准。请将信息发送至 IETF,网址为 ietf- 地址:ipr@ietf.org。 致谢 RFC 编辑器功能的资金目前由 互联网协会。 Shafranovich 信息 [第 8 页]