The CSV spec http://www.csvreader.com/csv_format.php我发现它以多种不同的方式实现......它基本上看起来只是一半规格,考虑到它的受欢迎程度,这是令人沮丧的。
要在 CSV 的单元格内包含换行符,可能需要换行单元格,或者可能需要转义换行符。您会从链接的文档中注意到,可以通过三种方法来执行此操作 - 并且不同的程序会以不同的方式对待它:
- Excel 将整个单元格用双引号括起来:单元格中可以包含(未转义的)换行符,并且只要用双引号括起来,就可以将其视为单个单元格(另请注意,您需要使用 Excel 样式的双引号转义在单元格内容内)
- 其他程序在字符前插入一个反斜杠,因此以
\
不被视为行尾,而是单元格内的换行符。单元格内可以包含未转义的换行符,只要它们前面有反斜杠字符即可。
- 其他人仍然用 C 风格的字符转义(实际的字符序列)替换换行符
\n
or \r\n
。在这种情况下,单元格已完全转义换行符。
潜在需要转义控制字符(以及其他内容(例如"
在#1中,并且\
在 #2+3 中)和不同风格的转义(例如,嵌入的引号可以转义为:双双引号""
或反斜杠双引号\"
)
我的建议:生成一个包含多行和关键转义字符的 open-office 文档,并查看 open-office 如何生成CSV
文件。从那里您可以决定将上述哪种方法用于单元格内的换行符,以及哪种转义方法。
style-1 的示例(excel):
#num,str,num
1,"Hello
World",1990
2,"Yes",1991
style-2 的示例:
#num,str,num
1,Hello \
Word,1990
2,Yes,1991
style-3 的示例:
#num,str,num
1,Hello \nWorld,1990
2,Yes,1991