php cvs 设置表头,PHP生成csv文件加bom头解决excel默认打开乱码问题

什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。

不仅限于 记事本保存的文件,只要在文件的开口包含了“EF BB BF” 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见)。这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的。

如果你的接口是UTF-8的,你需要强制下载一个文件,比如csv。

excel(wps除外)在默认情况(中文背景)下,认为csv是GB编码的,所以如果米有bom头,那你给用户呈现的文件,可能就是乱码了。

怎么加bom头呢?

在输出文件之前加上bom头就可以了:

function getExcelByArray2($arr,$filename="数据导出")

{

$file_name=$filename.'.csv';

$filename=iconv("utf-8","gbk",$file_name);

header("");

header("Content-Type: application/vnd.ms-excel");

header("Expires:0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("content-disposition: attachment;filename={$file_name}");

header( "Cache-Control: public" );

header( "Pragma: public" );

header( "Content-type: text/csv" ) ;

header( "Content-Dis; filename={$file_name}" ) ;

// 加上bom头,系统自动默认为UTF-8编码

echo chr(239).chr(187).chr(191);

foreach($arr as $k=>$v){

$detail="";

$key=array_keys($v);

for($i=0;$i

$detail.=$v[$key[$i]].",";

}

$detail.="n";

echo $detail;

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值