参考该文章https://segmentfault.com/a/1190000005366832 生成csv,csv文件在windows wps和我ubuntu16桌面版下打开正常。但是使用windows Excel 打开乱码。
解决:
function test() {
$fileName = 'demo';
// 几个header函数需要放fopen之前。不然会直接在浏览器页面打印输出。而不是文件下载
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
header('Cache-Control: max-age=0');
//直接输出到浏览器
$fp = fopen('php://output', 'a');
//在写入的第一个字符串开头加 bom。
$bom = chr(0xEF).chr(0xBB).chr(0xBF);
$column = [
$bom.'姓名','性别', '年龄'
];
$data = [
'张三','男士', '21'
];
fputcsv($fp, $column);
fputcsv($fp, $data);
fclose($fp);
}