CSV 到底是什么,以及数据一定会遇到的四件事
CSV 文件是用文本写成的表格,规则很短:字段由分隔符隔开,记录由换行分隔,字段可以用双引号包起来。在引号内部,两个连续引号表示一个引号,分隔符只是普通字符,换行属于字段本身,而不是记录结束。最后这条规则解释了为什么一条两行的备注是一个单元格而不是两行,也解释了为什么先按换行切分会把文件弄坏。
分隔符并不总是逗号。欧洲不少地区使用分号,因为那里的小数分隔符是逗号,`1,5;2,5` 没有歧义,而 `1,5,2,5` 有。Excel 会把制表符分隔的文本粘贴到单元格里。所以这里的分隔符是一个设置项,并提供自动检测:找出在每一行出现次数都相同的那个字符,而这正是“表格之所以是表格”的信号。
第四件事是看不见的:字节顺序标记。Excel 在“CSV UTF-8”文件开头写入 BOM,它到达时是一个没有宽度的字符,会混进第一个列名,让这个列名再也搜不到。页面在读取时把它去掉,一行代码就能省掉大量困惑。