CSV格式没有严格标准,RFC4180试图规范化之。
CSV格式的主要麻烦问题在于,如何处理以下几个特殊字符:分隔符、换行、双引号?
分隔符都是‘,’。
换行UNIX(/n)或WINDOWS(/r/n)。
对于双引号,RFC4180有如下规范:
http://www.rfc-editor.org/rfc/rfc4180.txt
其中第5~7讲到:
5. 字段可用双引号括起。如果一个字段没有用双引号括起,那么字段里不应该出现双引号。
6. 字段中若出现:逗号(即分隔符)、换行、双引号,那么字段要用双引号括起。
7. 当字段用双引号括起后,字段中间出现的双引号,要再用一个双引号表示转义:
比如字段值:a"bc在CSV文件表示为:"a""bc"。
以下是在Excel 2007上做的测试:
创建一个test.csv文件,填入内容,保存后用notepad++打开看原始符。
ab cd | "aa | aa" | a"a | a""a | a"""a | "a"""a" |
a,a | a,"a" | "a"",b" "c","d" | A'B'C' |
Notepad++中的样子:
"ab
cd","""aa","aa""","a""a","a""""a","a""""""a","""a""""""a"""
"a,a","a,""a""","""a"""",b""
""c"",""d""",A'B'C',,,
分析:
在将用户的输入转成CSV时,Excel2007遵守了上述所列的5~7条。
附一篇参考:
http://zhang-xzhi-xjtu.iteye.com/blog/1638499