0
为了得到excel正确读取csv文档而不将其转换为ASCII字符,您需要有一个UTF-8 BOM(3字节,十六进制EF BB BF )在文件的开始。导出到csv与BOM,奇怪的空间开始造成问题的文件
这是我使用导出功能到csv
function download_csv_results($results, $name)
{
header('Content-Type: text/csv; charset=utf-8');
header("Content-Transfer-Encoding: UTF-8");
header('Content-Disposition: attachment; filename='. $name);
header('Pragma: no-cache');
header("Expires: 0");
$outstream = fopen("php://output", "w");
fwrite($outstream, "\xEF\xBB\xBF");
fputcsv($outstream, array_keys($results[0]));
foreach($results as $result)
{
fputcsv($outstream, $result);
}
fclose($outstream);
}
的问题是,当我在十六进制查看我看到
20 ef bb bf
,而不是
ef bb bf 20
我认为20是一个空间,但是导致这个空间的原因是什么,为什么它在文档的开头是我无法弄清楚的。
尝试添加第四个字节。 – HaLeiVi