excel ne reconnait pas mes csv

Eléphanteau du PHP | 16 Messages

09 mai 2023, 10:42

Bonjour à tous,

j'ai créé un ficher csv

à la fin de ce dernier je tape

Code : Tout sélectionner

fputs($ouvre, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); //pour qu'excel reconnaisse le format UTF 8 fwrite($ouvre,$final); fclose($ouvre);
Malheureusement, quand je fais ça Excel (et pas seulement) ne reconnait plus le format csv et propose text unicode par défaut, ce qui est assez embêtant.

Je pourrai évidemment simplement enregistrer sous , et cocher csv point virgule sur excel, ce qui fonctionne, mais ce n'et pas le but.

Merci, stef

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9576 Messages

09 mai 2023, 10:49

Je pense que ta première ligne n'est pas correcte, tu mets le résultat de ton affectation, et non pas la valeur du BOM
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 16 Messages

09 mai 2023, 10:51

j'ai également tenté avec

Code : Tout sélectionner

fprintf($ouvre, chr(0xEF).chr(0xBB).chr(0xBF));

Eléphanteau du PHP | 16 Messages

09 mai 2023, 10:56

à savoir que dans les deux cas cela corrige bien les accents etc, mais ne garde pas le format csv
si j'enlève la ligne, je retrouve le format csv mais je n'ai plus la correction des accents

Mammouth du PHP | 1910 Messages

09 mai 2023, 11:16

et
fputs($ouvre, chr(0xEF).chr(0xBB).chr(0xBF));
?
car fprintf est pour une chaine formatée

Dans tous les cas, ouvre ton fichier avec un éditeur de texte pour voir si il parait "normal"
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 16 Messages

09 mai 2023, 11:22

Oui il parait normal et quand on compare le fichier généré en php avec le fichier converti en excel il n'y a aucune différence visible à l'œil nu, c'es probablement dans le bom

Eléphanteau du PHP | 16 Messages

09 mai 2023, 11:23

fputs($ouvre, chr(0xEF).chr(0xBB).chr(0xBF)); fait la même chose que les autres

Avatar du membre
Mammouth du PHP | 1541 Messages

09 mai 2023, 13:06

Salut, j'ai fait un test fonctionnel chez moi avec ça :
fwrite($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
Fichier ouvert en mode r ou rb, même résultat.

A noter qu'avec ou sans le marqueur BOM le fichier s'ouvre bien, la seule différence étant la reconnaissance ou non des caractères accentués.

Donc pour ton problème je dirais au doigt mouillé, soit il y a un problème avec le BOM qui a pourtant l'air bon, soit il y a quelque chose dans $final qui pose problème quand le BOM est présent.

Dans tous les cas, une autre idée serait de convertir le contenu en encodage Windows-1252 sans BOM. A tester.
Développeur web depuis + de 20 ans