利用Laravel-Excel导出生成了一个CSV格式,然后打开发现格式乱码。
既然出现是乱码,那肯定就是编码格式问题,右键另存为UTF-8格式,CSV正常显示。
然后利用Notepad 打开文件,查看文件编码格式确实是UTF-8的格式,但是确实在Office中打开显示乱码。
接着查看了一下,另存为的编码格式,发现其编码格式是UTF-8 BOM格式。
实际上因为微软系列软件是需要有bom头才视作utf8处理,
因此,在生成的php文件中,我们需要给csv添加一行BOM头信息。
如果是在laravel中,可以使用Storage
类
<?php
Storage::prepend($your_csv_file_path,chr(0xEF).chr(0xBB).chr(0xBF));//Storage的prepend方法会默认给添加的文字进行换行(PHP_EOL),如果不能忍受换行,可以直接修改
?>
$content = Storage::get($your_csv_file_paht);
$content = chr(0xEF).chr(0xBB).chr(0xBF).$content;
Storage::put($your_csv_file_paht, $content);