2017-02-23 22 views
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是一个空间,但是导致这个空间的原因是什么,为什么它在文档的开头是我无法弄清楚的。

+0

尝试添加第四个字节。 – HaLeiVi

回答

0

基于此answer我想通了它在文件" <?php"开始有一个空间,因为它包含在文件中,如果有人可以向我解释为什么它包括在内,我将不胜感激。