2013-05-06 138 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));