背景:
一次使用 laravel 的 Excel Facades 时,测试同事发现在他的 Windows Micro Office Excel 中打开是乱码的 ,这是故事的开始。
下面是我使用 Excel 的方法:
$exportArr = [
['1']
];
$top = ['test'];
array_unshift($exportArr, $top);
$fileName = 'xx';
Excel::create($fileName, function($excel) use ($exportArr)
{
$excel->sheet('sheet', function($sheet) use ($exportArr)
{
$sheet->rows($exportArr);
});
})->export('csv');
现象:只有在 Windows 的 Micro Office Excel 中打开是乱码,其他端都是OK的,这就很奇怪。
但是,将文件的编码格式改为 UTF-8 BOM 后,再打开就没有乱码了。看来跟这个 BOM有关系了。
百度一番后,需要了解以下知识点:
- BOM (Byte Order Mark)也是 Unicode 标准的一部分,通常BOM是用来标示Unicode纯文本字节流,Windows 使用 BOM 来区分输入的文本是使用哪种 Unicode 编码的(UTF-8,UTF-16BE,UTF-16LE),所以,