解决utf8编码中php导出CSV乱码的方法

  介绍

小编给大家分享一下解决utf8编码中php导出CSV乱码的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

解决乱码的方法:1、使用iconv函数将utf8编码转码为GBK,语法”$ str=iconv (& # 39; utf - 8 # 39; & # 39; GBK//忽略# 39;,str美元));”;2、在输出内容前先输出BOM头,这样Excel就可自动识别到是utf - 8了。

解决utf8编码中php导出CSV乱码的方法

其实需求是把数据导出到Excel,很当然的想到大名鼎鼎的PHPExcel这个库。这个库是很强大,就是比较占用内存,超10过万的数据,在web请求中基本是很难完成了。因此,使用原生php导出轻量的CSV还是有需求的。

一般情况下,导出utf - 8编码的常规内容到CSV当中,用Excel打开都是乱码,更别说一些非主流字符,或者是emoji表情。乱码,是因为在windows系统下,默认的Excel是使用GBK编码解析的。现如今,编码哪还有不是使用utf - 8的,真有,那也是大公司知名产品会为了省那点流量出有GBK等其他编码的版本,一般情况下都是使用utf - 8的。

要解决乱码问题,php中做法一般是使用iconv函数进行转码为GBK,这样,默认的Excel打开就不会有问题了。但对于emoji表情等主流字符,GBK并不能显示,转码失败直接为空了。可以添加//忽略标记进行忽略,这样只是忽略了它们,其他正常字符是能够保留的。

$ str=iconv (& # 39; utf - 8 # 39; & # 39; GBK//忽略# 39;,str美元));

这可以说是一种折中方案。能不能不转码直接输出utf - 8 ?难道Excel还不能自动识别utf - 8进而使用utf - 8来解码显示么?其实是可以的,只是它需要一个BOM头(在非windows的世界里是没有这个东西的),有这个BOM头它就能识别到是utf - 8,否则识别不了用默认的GBK来处理,自然就是乱码了。如何正确输出所谓的BOM头,看代码:

$ fp=fopen (& # 39;。/test_csv.csv& # 39;, & # 39;一个# 39;);   写入文件(fp美元,对应(0 xef) .chr (0 xbb) .chr (0 xbf));//输出BOM头   函数(fp美元[& # 39;标题& # 39;]);   函数(fp美元[& # 39;解决乱码& # 39;]);   美元fclose (fp);

可以解决所谓乱码以及正常显示emoji表情等非主流字符。

看完了这篇文章,相信你对解决utf8编码中php导出CSV乱码的方法有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

解决utf8编码中php导出CSV乱码的方法