2013-05-06 137 views
0

因此,我有一個簡單的腳本,可以將一些數據寫入CSV文件。該文件包含一些非ASCII字符(挪威字符),這些字符在Excel中打開時無法正確顯示。但是它們在OpenOffice中正確顯示。有誰知道如何解決這一問題?fputcsv中的非ascii字符

$fp = fopen('php://output', 'w'); 
    if(!$fp) 
    { 
     echo "Could not write CSV-file"; die; 
    } 
    $filename = sprintf('%s_export_%s.csv', $marketplace, date('Y_m_d_H_i_s')); 
    header('Content-Type: text/csv; charset=UTF-8'); 
    header('Content-Disposition: attachment; filename="' . $filename . '"'); 
    header('Pragma: no-cache'); 
    header('Expires: 0'); 

    foreach($collection as $i => $item) 
    { 
     $result = array(); 
     $result[] = $item->getData('email'); 
     $result[] = $item->getData('firstname'); 
     $result[] = $item->getData('lastname'); 

     fputcsv($fp,$result, ";"); 

    } 

    flush(); 
    fclose($fp); 

回答

1

Windows需要一個BOM知道一個文件是UTF-8和正確地打開它。

foreach之前,添加以下行:

fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));