关于淘宝CSV格式的研究

CSV即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互的格式。
           经过二进制代码的分析,具体文件格式规则如下:

  • 每条记录占一行
  • 以逗号为分隔符,淘宝以TAB为分隔符
  • 逗号前后的空格会被忽略
  • 字段中包含有逗号,该字段必须用双引号括起来
  • 字段中包含有换行符,该字段必须用双引号括起来
  • 字段前后包含有空格,该字段必须用双引号括起来
  • 字段中的双引号用两个双引号表示
  • 字段中如果有双引号,该字段必须用双引号括起来
  • 第一条记录,是字段名

        以上是通行规则,经研究发现,淘宝CSV在文头部加有标志FF FE,这两个字节如果不存在,文件读出来全部为乱码(后注1)。
        然而这一点现象并没有在有啊CSV文件中发现,拍拍CSV则暂没研究过。
        其它还有几点比较特殊的地方:

  • 如果某个字段没有值(为空),淘宝CSV中表示为TAB
  • 淘宝CSV文字编码为Unicode_2LE编码,这一点与有啊CSV是不一样的。

后注1: 文件头部有FF FE,这个称为文件的BOM信息,不同编码的BOM信息是不一样的。

Unicode {0xFF, 0xFE};
BE-Unicode {0xFE, 0xFF};
UTF8 = {0xEF, 0xBB, 0xBF};

这些知识也是猪悟能后来才知道的,特此标注一下。具体写入文件时加入BOM信息的方法可以参考下面的文章:

彻底解决.net中编码问题的心得

posted @ 2010-02-14 16:19  猪悟能  阅读(2653)  评论(0编辑  收藏  举报