2017-02-23 52 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"開始有一個空間,因爲它包含在文件中,如果有人可以向我解釋爲什麼它包括在內,我將不勝感激。