Question

So I have a simple script that writes some data to a CSV-file. The file contains a few non-ascii characters (norwegian characters) which are not displayed correctly in when opened in Excel. However they are displayed correctly in OpenOffice. Does anyone know how to fix this?

    $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);
Was it helpful?

Solution

Windows needs a BOM to know that a file is UTF-8 and open it correctly.

Before your foreach, add the following line:

fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top