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-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′);
Commentaires récents