ash*_*exm 2 php csv apache byte-order-mark utf-8
以下代码将"报告行"作为数组获取,并使用fputcsv将其转换为CSV.一切都工作得很好,除了不管我使用的字符集,它都是在文件的开头放置一个UTF-8 bom.这非常烦人,因为A)我指定iso和B)我们有很多用户使用显示UTF-8 bom作为垃圾字符的工具.
我甚至尝试将结果写入字符串,剥离UTF-8 BOM,然后回显它并仍然得到它.这个问题可能存在于Apache吗?如果我将fopen更改为本地文件,它会在没有UTF-8 BOM的情况下编写它.
header("Content-type: text/csv; charset=iso-8859-1");
header("Cache-Control: no-store, no-cache");
header("Content-Disposition: attachment; filename=\"report.csv\"");
$outstream = fopen("php://output",'w');
for($i = 0; $i < $report->rowCount; $i++) {
fputcsv($outstream, $report->getTaxMatrixLineValues($i), ',', '"');
}
fclose($outstream);
exit;
Run Code Online (Sandbox Code Playgroud)