Web-développeur et Administrateur système Freelance au Luxembourg, j'ai mis en place ce blog pour vous permettre de suivre l'évolution de ma société et partager avec vous quelques lignes de code.
Olivier
web 2.0

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

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);
$retfile_get_contents(‘temp.csv’);
echo chr(255).chr(254).mb_convert_encoding( $ret, ‘UTF-16LE’, ‘UTF-8′);

Leave a Reply

This site is using OpenAvatar based on
« Back to text comment