用户在输入数据的时候,不懂什么原因,数据是全角的,但是数据库保存没有任何问题,在数据导出到csv的时候就缺失了。

最开始的方案

//略
$tel = iconv($mobile,'utf-8','gb2312');
//略

这种方式全角数据会丢失。

改良方案,使用函数mb_convert_encoding()

//略
$tel = mb_convert_encoding($mobile,'gb2312','utf-8');
//略

这样生成的数据在前后带了个?,再次修改

//略
$tel = mb_convert_encoding($mobile,'gb2312','utf-8');
$tel = str_replace('?','',$tel);
//略

还是有问题,数据跳了一列,原本应该在B列的数据,直接跳到C列输出了,我觉得可能是字符集的问题,所有试了下gbk

//略
$tel = mb_convert_encoding($mobile,'gbk','utf-8');
$tel = str_replace('?','',$tel);
//略

成功。