0

所以我有一个简单的脚本,可以将一些数据写入 CSV 文件。该文件包含一些在 Excel 中打开时无法正确显示的非 ascii 字符(挪威字符)。但是它们在 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);
4

1 回答 1

1

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

在您的 之前foreach,添加以下行:

fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
于 2013-05-06T13:17:09.307 回答