Problème d’accent dans un export CSV en PHP

15.09.2008 23

J’ai passé pas mal de temps aujourd’hui pour trouver une solution à ce problème pourtant fort simple:

Exporter dans un CSV des données venant d’une base Mysql en UTF8 (avec des accents un peu partout) avec un script lui même encodé en UTF8.

Et bien vous pouvez me croire et demander confirmation à Ludo, c’est pas si simple, à tel point que la solution est perdue dans un message du site www.php.net sur la page de l’extension mbstring: utiliser le charset UTF-16LE

Pour faire court, voici un exemple de code PHP qui fonctionne:


header("Content-type: application/vnd.ms-excel; charset=UTF-16LE");
header("Content-disposition: attachment; filename=candidats-" .date("Y-m-d").".csv");
$out = fopen('temp.csv', 'w');
$line = array('nom', 'prénom', 'âge', 'matricule');
fputcsv($out, $line);
fclose($out);
$ret = file_get_contents('temp.csv');
echo chr(255).chr(254).mb_convert_encoding( $ret, 'UTF-16LE', 'UTF-8');


 Olivier PIERRE, freelance au Luxembourg Analyste développeur PHP/MySQL/jQuery et administrateur système Linux spécialiste Gentoo


Les messages similaires