近来用到了cvs格式,仔细研究了一下相关的文档,现将cvs格式的标准总结如下,其实还是很简单的
以下内容均来自 rfc4180
- CSV的全称是叫Comma Separated Value
- CSV的MIME类型是text/csv
- CSV文件中的每一行数据,作为一行记录,也就是一个条目(99%的情况,排除有些换行数据,下面会提到)
- CSV文件的每一行数据后面跟着(回车+换行符)即CRLF,但有些资料中也提到了单个CR或者LF均可,但标准rfc文档中用到的是CR+LF
- 文件第一行可以是标题行,这个用到的不多
- 每行数据中,每个字段之间均必须用半角逗号comma进行分隔,这也是为什么叫Comma Separated的来由,如果有标题行,那么标题之间也使用逗号分隔
- 每行的最后一个字段后应该只有CRLF,不应该再有逗号
- 最后一行后面可以不加CRLF
- 在逗号分隔开的每个字段中,前面的空白和后面的空白会被忽略,但单个字段内部的空白会被保留,例如, aaa, bbb bbb ,ccc 我们看到有三个字段,其中第二个字段前面,中间,后面均有空白,但CSV解析器应该只保留中间的空白,即bbb bbb,类似于java中的trim方法
- 如果某个字段中间有回车换行之类的字符,可以用双引号来引用,例如:
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx
那么可以判断出第二个字段之间内部存在一个回车换行符,由于使用双引号分隔,他们b 和 bb 被链接成一个字段 - 字段本身推荐使用双引号来引用,但MS的excel默认是不会对字段加" "的
- 转义字符逗号(,),当字段中存在逗号是,是必须要将这个字段用""引用起来的
- 转移字符双引号("),当字段中存在双引号时,必须连续用两个双引号来进行转义