php生成csv乱码是因为输出的csv格式文件没有BOM,其解决办法就是使用BOM标示字符编码,代码如“header(“Content-type:text/csv;charset=gb2312”);”。

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

解决PHP 输出csv文件中文乱码

PHP 下载文( } , @ 0 J e件常采用字节流输出的方式。因此常用的i D B Z下载csv格式代码如下:

header("Content-Type: application/force-download");
heO L H ~ E N - P aader("Content-type:text/csv;charset=gb2312");
headeD t f e ^r("Content-Disposition:filenq = = _ 9 [ame=打开邮件导出".date("YmdHis").".csv");
echo "收件人邮箱,收件人姓名,发p \ L - $ v送时间\r";
ob_end_flush();
foreach($list as $rs) {
echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:$ H +i:s',$rs->addtimO G deQ \ g Y)."\r"; flusr d T r o u s nh();
}
exit;

这样下载的csv文件使用记事本或者sublime text~ Y ] g 9 X等编辑器打开是正常的,但是使用excel打开就会乱码,原因是输出的csv格式文件没有BOM,BOM的说法很多,正常情况下,在PHP中是需要去除BOM的,不过csv文件需要使用BOM标示字符编码。

解决方式如下:

header("Content-Type: application/force-download");
header("Content-ty@ c N ; b U T )pe:text/csv;charset=gb2312");
header("Content-Disposition:fi( ( 8lename=打开邮件导出".? ? o F $date("YmdHis").".csv");
echo chr(0xEF)., ( ( u Hchr(0xBB).chr(0xBF);
echo "收件人邮箱,收件人姓名,发送时间\r";
ob_end_flush();
foreach($listd + C 6 P r E \ as $rs)
{
echo $rs->toemail.",".$rs-&_ L ] ( q 4 $ =gt;name.",".date('Y-m-d H:i:s',$rs->addO + @ dtimi e M % v { : -e)."\r";
flush();
}
exit;

由于Linux的换行符与? : . Y G L v { ]window的差别。如果} a ~ k上述代码在Linux服务器中有不好的反应,可将 “\rO @ P j t” 改为 “\r\n”。

推荐学习:《PHP视频教程》

以上就是php生成csv乱码怎么办的详细内容,更多请关注ph6 n 8 0 , ? j Ip中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注