Thursday, January 21, 2010

How to write UTF-8 data in csv

I was facing problem in writing UTF-8 data (Espanol) in CSV.
Below is the solution in PHP:


$data = "Plan du site,jusqu'à 80 %,économiser";
$data = mb_convert_encoding( $data, 'UTF-16LE', 'UTF-8');
$filename = "data.csv";
//and then add a couple of extra magic bytes before the data:
$data = chr(255).chr(254).$data;
//Then send your headers and the data. $filename should be something meaningful ending in .csv. I suggest including a random number or timestamp to defeat caching.
$size = strlen($data);
header("Content-type: application/vnd.ms-excel; charset=UTF-16LE");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Length: $size");
echo $data;


Enjoy Programming!!!