2013-05-06 2 views
0

Итак, у меня есть простой скрипт, который записывает некоторые данные в CSV-файл. Файл содержит несколько символов не-ascii (норвежские символы), которые не отображаются корректно при открытии в Excel. Однако они корректно отображаются в OpenOffice. Кто-нибудь знает, как это исправить?Non-ascii символов в fputcsv

$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)); 
Смежные вопросы