CSV导出时,含有逗号/减号等特殊字符造成的问题 | 您所在的位置:网站首页 › 表格中带逗号的数值不求和怎么办 › CSV导出时,含有逗号/减号等特殊字符造成的问题 |
背景
今天运营的同事来找我们核对数据,发现我们后台导出的用户列表不如上游数据方全,但是我们确实是每天同步另加实时同步来确保双方数据一致,这让我很困惑呀,,经过一番定向查找,发现少的这一批医生,我们数据库中也是有的,只是导出的csv中发现,唯一标识竟然混乱了,如下图所示: 原来如此,是因为这个字段中有符号减号(-)造成的 定位原因并解决CSV : Comma Separate Values 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号)。 “CSV”并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件: 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312; 由记录组成(典型的是每行一条记录);每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);每条记录都有同样的字段序列。而造成乱码的情况就是因为我的值中包含分隔符减号 解决方案: 你可以使用xlsx导出数据,应该不会有这种问题 字段中包含有逗号,该字段必须用双引号括起来 字段中包含有换行符,该字段必须用双引号括起来 字段前后包含有空格,该字段必须用双引号括起来 字段中的双引号用两个双引号表示 字段中如果有双引号,该字段必须用双引号括起来 第一条记录,可以是字段名 而我这种,数值中包含减号的,只要强制转为字符串就好,具体可以是: foreach ($doctors as $k => $v) { $v->医生大脑ID = $v->医生大脑ID."\t"; $v->医生u_id = $v->医生u_id."\n"; //头部 if ($i == 0 && $k == 0) { fputcsv($fp, array_keys((array)$v)); } fputcsv($fp, (array)$v); }使用 \t 或 \n 来强制转换为字符串即可,出来的数据就正常了哟 |
CopyRight 2018-2019 实验室设备网 版权所有 |