Php CSV错误编码

Php CSV错误编码,php,arrays,csv,Php,Arrays,Csv,我有一个仅由数字组成的数组,我使用以下脚本以CSV格式导出 <?php header('Content-Type: application/csv; charset=iso-8859-1'); session_start(); $tidyUp = array(); $index = 0; foreach($_SESSION['report'] as $date => $values){ $tidyUp[$index][] =$date; foreach($valu

我有一个仅由数字组成的数组,我使用以下脚本以CSV格式导出

<?php
header('Content-Type: application/csv; charset=iso-8859-1');
session_start();
 
$tidyUp = array();
$index = 0;
foreach($_SESSION['report'] as $date => $values){
    $tidyUp[$index][] =$date;
    foreach($values as $title => $value)
        $tidyUp[$index][] = $value;
    $index += 1;
}
exportToCsv($tidyUp);
function exportToCsv($array, $filename = "export.csv", $delimiter=",") {
    $f = fopen('php://output', 'w');
    // loop over the input array
    foreach ($array as $line) {
        // generate csv lines from the inner arrays
        fputcsv($f, $line , $delimiter);
    }
    // reset the file pointer to the start of the file
    fseek($f, 0);
    // tell the browser we want to save it instead of displaying it
    header('Content-Disposition: attachment; filename="'.$filename.'";');
    // make php send the generated csv lines to the browser
    fpassthru($f);
}  
?>

有什么建议吗?

检查$\u会话['report']数据的编码。它可能使用一些多字节字符。在将其传递给fputcsv函数之前,请在$行上使用。

在十六进制编辑器中打开生成的文件时,数据是什么样子的?有吗?字符是以单字节值还是多字节值的形式存储的?老实说,我不能告诉您,但我可以在那里发布结果:文件开头没有BOM表。每个字符都是一个字节,新行字符是十六进制的0A。但是,在屏幕截图的前两行中,列的数量似乎并不相等。如果您在一个简单的文本编辑器中打开文件,它应该显示得很好。我假设Mac上的Libre Office在新行字符或列计数方面存在问题。使用文本编辑器打开可以工作,但如何使其也可以作为CSV工作?另外,Ubuntu不是Macupdate吗:在微软的普通office上,它工作得很顺利,谢谢你的帮助
array ( 0 => array ( 0 => '2019-10-29', 1 => 0, 2 => '45', 3 => 0, 4 => 0, 5 => 45, ), 1 => array ( 0 => '2019-10-30', 1 => 45, 2 => '165', 3 => '25', 4 => '26', 5 => 211, ), 2 => array ( 0 => '2019-10-31', 1 => 211, 2 => '12', 3 => '120', 4 => 0, 5 => 103, ), )