这篇文章主要介绍了php生成csv乱码的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
php生成csv乱码是因为输出的csv格式文件没有BOM,其解决办法就是使用BOM标示字符编码,代码如“header("Content-type:text/csv;charset=gb2312");”。
本文操作环境:windows7系统、PHP7.1版,DELL G3电脑
解决PHP 输出csv文件中文乱码
PHP 下载文件常采用字节流输出的方式。因此常用的下载csv格式代码如下:
header("Content-Type: application/force-download"); header("Content-type:text/csv;charset=gb2312"); header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv"); echo "收件人邮箱,收件人姓名,发送时间\r"; ob_end_flush(); foreach($list as $rs) { echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush(); } exit;
这样下载的csv文件使用记事本或者sublime text等编辑器打开是正常的,但是使用excel打开就会乱码,原因是输出的csv格式文件没有BOM,BOM的说法很多,正常情况下,在PHP中是需要去除BOM的,不过csv文件需要使用BOM标示字符编码。
解决方式如下:
header("Content-Type: application/force-download");header("Content-type:text/csv;charset=gb2312");header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv");echo chr(0xEF).chr(0xBB).chr(0xBF);echo "收件人邮箱,收件人姓名,发送时间\r";ob_end_flush();foreach($list as $rs){ echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush();}exit;
由于Linux的换行符与window的差别。如果上述代码在Linux服务器中有不好的反应,可将 "\r" 改为 "\r\n"。
php是什么语言
php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
感谢你能够认真阅读完这篇文章,希望小编分享的“php生成csv乱码的解决方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!