后端开发|PHP问题
utf8,php,CSV
后端开发-PHP问题
易语言取进程pid源码,苹果电脑vscode变成中文,ubuntu系统路径,如何关闭tomcat端口,object c爬虫,php工程师职责,seo推广服务有什么用lzw
房贷计算器 网页源码,atom vscode 差异,ubuntu 游侠,关闭tomcat很慢,英汉字典sqlite,bootstrap 弹框插件,前端vm是用什么框架模板,按什么分爬虫的分类,php nts 下载,辽宁seo网络优化,网站引导页flash下载,制作网页源码,婚纱测量模板lzw
推荐:《PHP视频教学》
明星主页网站源码,ubuntu窗口界面小,python爬虫个人收获,php ->和.,seo外贸经验lzw
其实需求是把数据导出到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并不能显示,转码失败直接为空了。可以添加//IGNORE标记进行忽略,这样只是忽略了它们,其他正常字符是能够保留的。
$str = iconv(utf-8, GBK//IGNORE, $str));
这可以说是一种折中方案。能不能不转码直接输出UTF-8?难道Excel还不能自动识别UTF-8进而使用UTF-8来解码显示么?其实是可以的,只是它需要一个BOM头(在非windows的世界里是没有这个东西的),有这个BOM头它就能识别到是UTF-8,否则识别不了用默认的GBK来处理,自然就是乱码了。如何正确输出所谓的BOM头,看代码:
$fp = fopen(./test_csv.csv, a);fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));//输出BOM头fputcsv($fp, [标题]);fputcsv($fp, [解决乱码]);fclose($fp);
以上亲测,可以解决所谓乱码以及正常显示emoji表情等非主流字符。
如果觉得《utf8编码的php导出CSV乱码怎么解决?》对你有帮助,请点赞、收藏,并留下你的观点哦!