Encodage à la génération d'un fichier

Résolu
Dacobah Messages postés 260 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 septembre 2011 - 11 juil. 2011 à 14:57
Dacobah Messages postés 260 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 septembre 2011 - 23 juil. 2011 à 23:31
Bonjour,

je génère un fichier CSV à partir d'un script PHP. C'est-à-dire que je fais une requête sur ma base de données, je récupère les champs à afficher, je constitue mon fichier CSV avec des intitulés et le résultat de ma requête ligne, par ligne. Jusque là, tout va bien.

Le soucis c'est que dans mon fichier CSV j'obtiens des prénoms avec des caractères étranges : Valérie au lieu de Valérie, michèle au lieu de Michèle, etc.

J'ai pensé à faire des conversions avec les fonctions d'encodage de php, mais le résultat est le même.
Idem pour les headers tels que header('Content-Transfer-Encoding: text/csv'); (car je force le téléchargement) : rien ne change.

Et surprise, le contenu de mon fichier appelé dans la page d'un navigateur m'affiche bien les bons prénoms avec les vrai accents.

Du coup je suis persuadé que mon problème provient de la transformation en fichier CSV, puisque c'est là que je vois ces affreux caractères.

Qu'en pensez-vous ? Avez-vous une idée pour m'éclairer ?

Merci d'avance à tous !

Gaël

5 réponses

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
13 juil. 2011 à 14:12
C'est très simple, le fichier CSV est créé en ISO et tu y envoies de l'UTF-8.
Donc, à la lecture du fichier avec Excel, tu as des caractères accentués non reconnus.
Par la suite, si tu fais une injection du fichier CSV vers la DB ou autre, …
comme c’est de l’UTF-8, il y a aucun problème. Vu que tu travails en UTF-8.

Sinon, header('Content-Type: text/csv; charset=iso-8859-1'); affiche les caractère en ISO.
Mais par la suite, tu aurras des problèmes sur ton site car il fonctionne en UTF-8.
3
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
13 juil. 2011 à 14:20
Je crois même que si tu envoies de l'UTF-8 vers ton fichier et que tu utilises ce
header('Content-Type: text/csv; charset=iso-8859-1');
il affichera pas Valérie au lieu de Valérie mais pas Valérie non plus.
ça sera toujours illisible.

Donc, tu dois décoder chaque passage.
Mais je crois que dans ton cas, tu ne dois rien faire.
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
22 juil. 2011 à 19:58
Salut,

Doit en conclure qu'Excel n'est pas foutu d'ouvrir simplement un CSV en UTF-8 alors qu'il n'y a pas de problème avec Open Office ??

Je ne sais pas quelle version d'excel tu as, ni si c'est lui que tu utilises, ni comment tu procédes pour l'ouverture, mais dans tous les cas, sauf à utiliser le notepad de WIN98, tu as possibilité de choisir l'encodage. Avec les versions d'excel un peu ancienne il me semble que le choix n'est donné que si tu l'ouvres manuellement (à partir du menu d'excel)

Je suis de l'avis de Stay, je pense que tu n'as rien à faire, ... sauf peut être changé de tableur ^^

Cordialement,


Kohntark -
3
Dacobah Messages postés 260 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 septembre 2011
22 juil. 2011 à 18:17
Merci beaucoup stay !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dacobah Messages postés 260 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 septembre 2011
23 juil. 2011 à 23:31
Oui toi et Stay, vous avez raison. Le problème vient du réglages des options lors de l'ouverture du fichier sous mon tableur. Car si je l'ouvre dans ma page tous les caractères marchent bien.

Merci à vous deux
0
Rejoignez-nous