背景:一般情況下,當我們導出 csv (或xls或xlsx)時,都需要通過文件頭來設置一下文件輸出的文字編碼:
header('Content-Type: application/vnd.ms-excel; charset=utf8');
使用utf8編碼的話,一般來說wps好使,office 就不太好使(office打開會亂碼);
然后在很久很久的一段時間里,我都是使用 gbk 或 gb2312 來解決這個問題:
header('Content-Type: application/vnd.ms-excel; charset=gbk');
今天才發現,在mac book 環境下,設置 gbk 編碼其實是不行的。也會亂碼。經過百度一下之后,才知道要設置為 gb18030
header('Content-Type: application/vnd.ms-excel; charset=gb18030');
關於gb18030的介紹看這里:https://baike.baidu.com/item/gb18030/3204518

當然,除了修改文件頭,還要記得修改 echo 出來的內容的編碼,例如輸出標題:
echo mb_convert_encoding(implode(',', array_values($titles)), 'gb18030') . "\n";
修改后的導出類:
https://www.cnblogs.com/tujia/p/11358096.html
完。
