Aller au contenu

Change
Bienvenue sur GeekZone
Inscrivez-vous sur GeekZone pour profiter des fonctions avancées du forum, proposer des news, participer aux conversations, ouvrir votre galerie, profiter de la messagerie interne et venir tester nos modérateurs avec du bon troll... Attention, ils ont la gâchette facile. C’est aussi pour ça que GeekZone est le meilleur site de passionnés depuis 2002 ! Si vous avez déjà un compte, connectez-vous - sinon, il est temps d'en créer un.

[PHP]Export CSV et UTF8

- - - - -

  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1
Ludwig

Ludwig

    Jedi Geek

  • Membre
  • PipPipPip
  • 345 messages
  • Lieu:Perpignan
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
fwrite($fp, utf8_decode($str)."\n");
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

#2
ZGoblin

ZGoblin

    SpaceCat Geek

  • Membre
  • PipPipPipPipPipPipPip
  • 4308 messages
  • Lieu:Lille
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/manua...ction.fopen.php
http://www.php.net/m.../ref.stream.php

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

#3
Ludwig

Ludwig

    Jedi Geek

  • Membre
  • PipPipPip
  • 345 messages
  • Lieu:Perpignan
Oui mais stream_encoding n'existe pas sur ma version de php.


Résolu avec ça :
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);
?> 

Le BOM doit spécifier l'encodage apparemment

Modifié par Ludwig, 28 July 2010 - 14:57.





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)