关于淘宝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中编码问题的心得

优质内容筛选与推荐>>
1、mongodb 副本集 搭建
2、需求分析
3、HDU1060 leftmost digit
4、json_encode 中文解决方法
5、WPF 杂谈——资源文件


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号