这是如何将 php 数据导出到 csv 的短代码
$filename ="excelreport.csv";
$contents = "русский \t testdata2 \t testdata3 \t \n latviešu valoda \t 43.45 \t testdata3 \t \n";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents);
这是将数组导出到 csv 的短代码
$data=array(
array("firstname" => "русский", "lastname" => "Johnson", "age" => 25),
array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18),
);
$filename = "website_data_" . date('Ymd') . ".csv";
header('Content-type: application/csv');
header("Content-Disposition: attachment; filename=\"$filename\"");
$out = fopen("php://output", 'w');
foreach($data as $row) {
fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
exit;
在第一个代码中,有一个带有俄语字符的字符串,并且 withchr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents)
可以处理该字符串,因此俄语字符可以русский
正确显示在 csv 中。
以同样的方式尝试对数组进行操作。
添加$data = (chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $data));
在输出中获取空白 csv 文件。
假设,好的,不适用于数组,但如第一个示例中所示,必须使用字符串。所以将代码更改为此
foreach($data as $row) {
fputcsv($out, array_values((chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $row))), ',', '"');
}
但也会得到空白的 csv 文件。任何想法如何获得正确的 csv 文件(将数组导出到 csv 并正确显示俄语字符)?