解决PHP写入csv文件用Excel打开乱码

使用 CSV 打开文件是正常的,但是使用 Excel 打开文件就出现了中文乱码。导出的 CSV 文件是 UTF-8无BOM编码格式,而我Excel的UTF-8编码格式都是有BOM 的,添加 BOM 之后,乱码就可解决。

    private function _write_csv($data)
    {
        file_put_contents($this->_file_dir, '');

        $file = fopen($this->_file_dir, 'w');
        fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF)); // 添加 BOM
        $content = [
            '日期',
            '品类',
            '价格',
            '单位',
        ];
        fputcsv($file, $content);
        foreach ($data as $item) {
            $content = [
                $item['product_name'],
                date('Y-m-d', $item['day_time']),
                $item['price'],
                $item['unit_name']
            ];
            fputcsv($file, $content);
        }
        fclose($file);
    }
发布了226 篇原创文章 · 获赞 31 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/why444216978/article/details/104250587
今日推荐