fputcsv中的非ascii字符

时间:2013-05-06 13:11:46

标签: php csv fputcsv

所以我有一个简单的脚本将一些数据写入CSV文件。该文件包含一些非ASCII字符(挪威字符),这些字符在Excel中打开时无法正确显示。但是它们在OpenOffice中正确显示。有谁知道如何解决这个问题?

    $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 个答案:

答案 0 :(得分:1)

Windows需要BOM 知道文件是UTF-8并正确打开。

foreach之前,添加以下行:

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