PHP Streaming CSV always adds UTF-8 BOM

Posted by Mustafa Ashurex on Stack Overflow See other posts from Stack Overflow or by Mustafa Ashurex
Published on 2010-04-05T01:20:45Z Indexed on 2010/04/05 1:23 UTC
Read the original article Hit count: 400

Filed under:
|
|
|
|

The following code gets a 'report line' as an array and uses fputcsv to tranform it into CSV. Everything is working great except for the fact that regardless of the charset I use, it is putting a UTF-8 bom at the beginning of the file. This is exceptionally annoying because A) I am specifying iso and B) We have lots of users using tools that show the UTF-8 bom as characters of garbage. I have even tried writing the results to a string, stripping the UTF-8 BOM and then echo'ing it out and still get it. Is it possible that the issue resides with Apache? If I change the fopen to a local file it writes it just fine without the 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;

© Stack Overflow or respective owner

Related posts about php

Related posts about utf-8