欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php怎么导出csv设置编码

程序员文章站 2022-03-22 09:18:39
...

php导出csv设置编码的方法:1、使用iconv方法将导出的内容转码由utf-8转为gb2312;2、使用mb_convert_encoding方法转换编码。

php怎么导出csv设置编码

本文操作环境:Windows7系统、PHP7.1版,Dell G3电脑

php怎么导出csv设置编码?PHP下导出csv乱码?

  我们之前都是使用PHPexcel导出我们的一些数据的,由于Phpexcel对导出超出1万条数据会导至超时和内存暴涨,后来我们就改用数据导出成csv格式的。

相信很多朋友们在用PHP导出csv文件时都遇到各种乱码问题。网上搜了一堆都是用加BOM的方式来解决,这个方法我试了好多次在我们的测试和生产环境下都不管用,不知道是为什么。

  后来使用iconv方法将导出的内容转码由utf-8转为gb2312,奇迹终于出来了,可以正常显示了,不过经同事发现,我们导出400多条数据里竟然少了几十条数据(我是一条一条转码然后拼接出出的csv字符串)。于是到度娘上找iconv转码失败的问题,发现iconv原来是有BUG的,对于某些中文字转不了,转不了还不能跳过然后返回空值,是这个原因导致少了几十条数据,同时给出了用mb_convert_encoding 这个方法来转换。于是稍作修改就改成了用mb_convert_encoding方法了,在本地机测试非常正常,代码如下:

$str = mb_convert_encoding($str,'gb2312');

但发布到线上导出数据还是一堆乱码,但与之前不作转码时的乱码还不一样,说明mb_convert_encoding方法是起作用的。查了一下mb_convert_encoding方法有三个参数$from_encoding,第三个参数是可选参数,网上大多数的示例都是不使用第三个参数的,第三个参数默认也是null值。于是我把它用起来改成

$str = mb_convert_encoding($str,'gb2312','utf-8');

在本地开发机上测试是正常的,发布到生产环境,吼吼,一切正常了。

这究竟是为什么? 真没时间去深究了,有知道的同学请告诉我一下吧

推荐学习:《PHP视频教程

以上就是php怎么导出csv设置编码的详细内容,更多请关注其它相关文章!

相关标签: php csv