Следующий код получает строку отчета в виде массива и использует fputcsv для преобразования ее в CSV. Все работает отлично, за исключением того факта, что независимо от используемой кодировки я помещаю бомбу UTF-8 в начало файла. Это очень раздражает, потому что A) я указываю iso и B) у нас много пользователей, использующих инструменты, которые показывают бомбу UTF-8 как символы мусора.
Я даже пытался записать результаты в строку, раздеть UTF-8 BOM, а затем повторить ее и все еще получить. Возможно ли, что проблема связана с Apache?
Если я изменяю fopen на локальный файл, он просто пишет его без спецификации UTF-8.
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;