Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'encodage lors de l'écriture d'un fichier .csv

Encodage UTF-8 Sans BOM au lieu de UTF-8 simple (avec BOM)

Sujet résolu
    29 juillet 2010 à 11:57:04

    Bonjour,

    J'ai un script PHP qui écrit un fichier .csv (séparation avec des points virgules).

    Voila le code qui me sert à écrire ce fichier (Avec les explications en commentaires)

    $csvFile = fopen($name.'.csv', 'w'); 
    fputs($csvFile, $titles."\n"); // $titles est une String qui ressemble à : "ID;Nom;Prénom"
    fputs($csvFile, $lineString); // $lineString est une String qui ressemble à "67865;MARTIN;Jérémie\n" (Plusieurs lignes de ce type sont ajoutées à l'aide d'une boucle)
    fclose($csvFile);
    


    Mais lorsque j'ouvre le fichier créé à l'aide de notepad++ (Windows) ou de geany (Linux) l'encodage détecté est UTF-8 (sans BOM) alors que j'aimerais que cet encodage soit UTF-8.

    Après avoir un peu rechercher sur le net, j'ai compris que pour que mon fichier soit en UTF-8 avec BOM, il faut que j'écrive moi-même le BOM, qui est sur 3 octets. Cependant, je n'ai trouvé nul part quels étaient ces octets, ni comment les écrire (ce n'est pas une simple string...)
    Donc si vous aviez réponse à mes questions, ça serait génial!

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      29 juillet 2010 à 12:05:08

      En général quand on parle d'UTF-8 pour des fichiers (web du moins), c'est sans BOM justement.

      Pourquoi tu tiens à l'ajouter ?
      Ton fichier n'est pas lisible en l'état ?
      • Partager sur Facebook
      • Partager sur Twitter
        29 juillet 2010 à 12:09:14

        En effet... Microsoft Excel ne reconnait pas mon fichier UTF-8 sans BOM. Quand je l'ouvre avec geany ou notepad++, pas de problèmes, il est détecté en UTF-8 sans BOM, et tous les accents sont corrects, avec openoffice, les accents sont corrects aussi, mais avec Excel, ça ne marche pas... (Alors qu'en changeant à la main avec notepad++ et mettre UTF-8 avec BOM, là ça marche)

        Mais en fait, j'ai réussi à trouver toute seule comment ajouter le BOM.
        Une simple ligne :
        fputs($csvFile, b"\xEF\xBB\xBF");
        

        Et ça marche très bien partout :)
        • Partager sur Facebook
        • Partager sur Twitter

        Problème d'encodage lors de l'écriture d'un fichier .csv

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown