Php csv 导出下载为 Windows-1252 而不是 utf_8

Php csv export downloaded as Windows-1252 instead of utf_8

你好,我有 utf_8 编码数据,但是在导出时我在 Microsoft excel 上打开它,我得到了这个

这里是我用记事本打开的时候

当我以 excel 格式打开文件时,我从原始文件 1252 windows

中获得此编码

这是我的代码

    $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);