php中iconv转换成utf-8编码丢失数据的问题

2022-10-11 20:41:31 199 0
魁首哥

最近在一个php项目中做了一个批量导入会员信息的功能。当初考虑主要有两种实现方法:

第一种:用excel文件格式批量导入。php要使用excel批量导入会员信息需要引入excel插件,而且实现的代码还比较麻烦,综合考虑后就使用了第二种方法。

php中iconv转换成utf-8编码丢失数据的问题

第二种:用 csv 文件格式批量导入。php内置的有fgetcsv函数,可以从文件指针中读取数据并解析csv字段。

因为在csv文件中 字符串 编码基本上都是gb2312格式的。所以在写入数据库之前用iconv函数把各个字符串由gb2312编码转换成了utf-8编码。刚开始的测试的时候由于数据量比较少没有发现丢失数据的问题,后来上线试运行后大批量导入数据的时候就出现经常性的丢失某个字段数据的问题。然后就是各种排查、对比发现数据都是正常的,难道是程序的问题?

后台经过对丢失数据的那一行增加判断输出后,才发现问题所在:

会不会是因为gb2312编码对中文支持的范围比较小的原因。于是就在 iconv 中把gb2312修改成gbk编码。经测试,数据丢失的问题解决了。

收藏
分享
海报
0 条评论
199
上一篇:cgi fastcgi php-cgi php-fpm 关系通俗解释 下一篇:PHPUnit 手册「笔记」

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码