问题描述
你好,我有utf_8编码的数据,但是在导出时,我在microsoft excel上将其打开
在这里用记事本打开时
当我以excel格式打开文件时,会从原始文件 1252个窗口
中获取此编码这是我的代码
$outputCSv = "";
$someData = array(
array('one','two','three'),array('واحد','اثنان','ثلاثة'),array ('اربعة','خمسة','ستة'),array('سبعة','ثمانية','تسعة'));
foreach ($someData as $data) {
$outputCSv .= implode(',',$data) . "\r\n";
}
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment;filename=csvTest.csv");
header("content-encoding: UTF-8");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
echo $outputCSv; exit(0);
解决方法
虽然我浪费时间挑战编码,但我使用了输出缓冲,它的工作原理很像魅力
ob_clean();
ob_start();
$outputCSv = "";
$someData = array(
array('one','two','three'),array('واحد','اثنان','ثلاثة'),array ('اربعة','خمسة','ستة'),array('سبعة','ثمانية','تسعة'));
foreach ($someData as $data) {
$outputCSv .= implode(',',$data) . "\r\n";
}
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment;filename=csvTest.csv");
header("Content-Encoding: UTF-8");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
echo $outputCSv;
ob_end_flush();
exit(0);