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 "收件人邮箱,收件人姓名,发送时间"; ob_end_flush(); foreach($list as $rs) { echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime).""; flush(); } exit;
登录后复制
这样下载的csv文件使用记事本或者sublime text等编辑器打开是正常的,但是使用excel打开就会乱码,原因是输出的csv格式文件没有BOM,BOM的说法很多,正常情况下,在PHP中是需要去除BOM的,不过csv文件需要使用BOM标示字符编码。
立即学习“PHP免费学习笔记(深入)”;
解决方式如下:
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 "收件人邮箱,收件人姓名,发送时间";ob_end_flush();foreach($list as $rs){ echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime).""; flush();}exit;
登录后复制
由于Linux的换行符与window的差别。如果上述代码在Linux服务器中有不好的反应,可将 “” 改为 “”。
推荐学习:《PHP视频教程》
以上就是php生成csv乱码怎么办的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2515220.html