解决PHP输出UTF-8编码的csv乱码问题

众所周知,UTF-8已经一统天下了,但是微软office默认使用的还不是它,经常在使用程序生成CSV的时候总是看到的是乱码,其实office并非顽固分子,在早期版本已经增加了对UTF-8的支持,但是你要告诉他,你的数据是UTF-8。

怎么做呢?

PHP处理方式

1
2
3
4
5
6
// utf8
$fp = fopen('./test_csv.csv', 'a');
fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));//输出BOM头
fputcsv($fp, ['标题']);
fputcsv($fp, ['解决乱码']);
fclose($fp);

命令行处理方式

1
2
3
printf '\xEF\xBB\xBF’ > tmp.csv
cat your.csv >> tmp.csv
mv tmp.csv your.csv

get√ 到了吗?