# \[PHP\]Export CSV et UTF8

**URL:** <https://forum.geekzone.fr/t/php-export-csv-et-utf8/51484>\
**Category:** Dev\
**Created:** [Juillet 28, 2010, 12:32 UTC](https://forum.geekzone.fr/t/php-export-csv-et-utf8/51484 "2010-07-28T12:32:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ludwig](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/ludwig/32/623_2.png) [@Ludwig](https://forum.geekzone.fr/u/Ludwig)\
**Post date:** [Juillet 28, 2010, 12:32 UTC](https://forum.geekzone.fr/t/php-export-csv-et-utf8/51484/1 "2010-07-28T12:32:09Z")

</div>

Salut,

Dans un back-office je dois exporter des listing clients en CSV, problème, j’ai des Grecs et là ça coince je n’arrive pas à avoir des caractères lisibles dans le csv.  
Mes fichiers php sont en UTF-8, ma bdd d’où proviennent les listing aussi.

Voilà les headers que je balance dans le script :

`header("Content-disposition: attachment; filename=export.csv");
header("Content-Type: application/force-download; charset=UTF-8");
header("Content-Transfer-Encoding: application/octet-stream\n");
header("Content-Length: ".filesize("export.csv"));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile("export.csv"); `

Truc bizarre, je suis obligé d’ajouter un utf8\_decode() sur les chaînes contenant des accents pour qu’ils s’affichent correctement… du genre

```auto

```

Normalement si tout est en UTF-8 ça ne devrait pas être le cas non ? Cela ne règle quand même pas mon problème de caractères helléniques.

Merci

---

<div class="post-metadata">

**Author:** ![ZGoblin](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/zgoblin/32/152483_2.png) [@ZGoblin](https://forum.geekzone.fr/u/ZGoblin)\
**Post date:** [Juillet 28, 2010, 1:26 UTC](https://forum.geekzone.fr/t/php-export-csv-et-utf8/51484/2 "2010-07-28T13:26:39Z")

</div>

Comment créé tu ton fichier “export.csv” ?

Dans la doc fopen de php, je lis que l’on peut définir le stream\_encoding avec un contexte, as-tu bien créé ton fichier en UTF-8 ?  
[http://php.net/manual/fr/function.fopen.php](http://php.net/manual/fr/function.fopen.php)  
[http://www.php.net/manual/fr/ref.stream.php](http://www.php.net/manual/fr/ref.stream.php)

Même remarque pour ton readfile, tu ne l’as pas défini en UTF-8.

---

<div class="post-metadata">

**Author:** ![Ludwig](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/ludwig/32/623_2.png) [@Ludwig](https://forum.geekzone.fr/u/Ludwig)\
**Post date:** [Juillet 28, 2010, 1:56 UTC](https://forum.geekzone.fr/t/php-export-csv-et-utf8/51484/3 "2010-07-28T13:56:59Z")

</div>

Oui mais stream\_encoding n’existe pas sur ma version de php.

Résolu avec ça :

[code]if you have to write a file in UTF-8 format, you have to add an header to the file like this :

\<?php $f=fopen("test.txt", "wb"); $text=utf8\_encode("�a�!"); // adding header $text="\xEF\xBB\xBF".$text; fputs($f, $text); fclose($f); ?\> [/code]

Le BOM doit spécifier l’encodage apparemment
