Open lizzie opened 9 years ago
http://www.ietf.org/rfc/rfc4180.txt
逗号分割格式文件(CSV),常常用于在不同的电子表格软件之间进行数据转换。虽然这种格式非常常见,但是在这之前都没有很好的规范化说明过。另外,csv 格式文件的 MIME 类型也一直没有规范过,这份文档中,指定了 "text/csv" 为 CSV 文件的 MIME 类型。
"text/csv"
每条记录占一行,且以 CRLF 作为换行符
CRLF
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF
最后一条记录的换行符 CRLF 可省略
aaa,bbb,ccc CRLF zzz,yyy,xxx
首行记录可以是标题,每个标题字段对应下面的字段值,且个数及顺序一致。是否包含标题行,可在 MIME 类型中的 header 参数中表明
MIME
header
field_name,field_name,field_name CRLF aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF
每行(包含标题行),如果有多个字段,各个字段以 , 分割。每行包含的字段数需一致。各个字段中的空格是有效的值,不能被忽略。每条记录的最后一个字段不需要添加 ,
,
aaa,bbb,ccc
每个字段可以加双引号包裹(但有些软件,如 Microsoft Excel不能识别此双引号)。如果没使用双引号包裹的字段,那么,字段内部不能出现双引号。
Microsoft Excel
"aaa","bbb","ccc" CRLF zzz,yyy,xxx
如果字段中包含换行符 CRLF、双引号、逗号,那么该字段应需要双引号包裹。
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx
如果被双引号包裹的字段中有双引号字符的话,那么需求将字段内的双引号字符转义,即在双引号字符前再加个双引号字符。
"aaa","b""bb","ccc"
范式:
file = [header CRLF] record *(CRLF record) [CRLF] header = name *(COMMA name) record = field *(COMMA field) name = field field = (escaped / non-escaped) escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE non-escaped = *TEXTDATA COMMA = %x2C CR = %x0D ;as per section 6.1 of RFC 2234 [2] DQUOTE = %x22 ;as per section 6.1 of RFC 2234 [2] LF = %x0A ;as per section 6.1 of RFC 2234 [2] CRLF = CR LF ;as per section 6.1 of RFC 2234 [2] TEXTDATA = %x20-21 / %x23-2B / %x2D-7E
charset, header
charset
US-ASCII
IANA
text
"present"
"absent"
RFC 2046 4.1.1
翻译下?
赞,代码的前面空白可以去掉,例如:
list item
indent equal code start.
http://www.ietf.org/rfc/rfc4180.txt
1. 简介
逗号分割格式文件(CSV),常常用于在不同的电子表格软件之间进行数据转换。虽然这种格式非常常见,但是在这之前都没有很好的规范化说明过。另外,csv 格式文件的 MIME 类型也一直没有规范过,这份文档中,指定了
"text/csv"
为 CSV 文件的 MIME 类型。2. CSV 格式的定义
每条记录占一行,且以
CRLF
作为换行符最后一条记录的换行符
CRLF
可省略首行记录可以是标题,每个标题字段对应下面的字段值,且个数及顺序一致。是否包含标题行,可在
MIME
类型中的header
参数中表明每行(包含标题行),如果有多个字段,各个字段以
,
分割。每行包含的字段数需一致。各个字段中的空格是有效的值,不能被忽略。每条记录的最后一个字段不需要添加,
每个字段可以加双引号包裹(但有些软件,如
Microsoft Excel
不能识别此双引号)。如果没使用双引号包裹的字段,那么,字段内部不能出现双引号。如果字段中包含换行符
CRLF
、双引号、逗号,那么该字段应需要双引号包裹。如果被双引号包裹的字段中有双引号字符的话,那么需求将字段内的双引号字符转义,即在双引号字符前再加个双引号字符。
范式:
MIME 类型说明 text/csv
charset, header
。charset
为US-ASCII
,但是你可以定义IANA
规定text
类型支持的所有编码方式。header
参数定义了是否包含标题行。有效值为"present"
或"absent"
。RFC 2046 4.1.1
中的说明,使用CRLF
作为换行符。但不排除实现者使用其他字符作为换行符。