Glorieux paint avec le logo excel et des yeux rigolo, il bave parce qu'il est nul HiihiHiIHihiih, et moi je me tire une balle, sur un fond de rendu de mauvais encodage

Résoudre le problème d‘encodage (UTF-8) dans Excel

La gestion de l’encodage de fichiers Excel en UTF-8 peut être un véritable casse tête, notamment lorsque l’ont souhaite les réutiliser afin d’effectuer du traitement par lots (exports puis ré-import de base de données, etc.)

Voici les procédures qui ont fonctionnées pour moi.

Exporter

  1. Excel > exporter utf 8 (dans les paramètres d’export > web)
  2. Ouvrir sous Atom VSCode
  3. Définir encodage ISO 8859-1
  4. Package “Convert to UTF8” > Utiliser sur le fichier

Importer

  1. Excel > Nouveau fichier
  2. Onglet Données
  3. Nouvelle requête
  4. À partir d’un fichier > CSV > Choisir > Importer
  5. Origine du fichier : 65001 / Unicode UTF-8
  6. Note : Attention aux chiffres : ne pas formater, par exemple si import de numéros de téléphone
  7. Charger

Notes finales

Si le rendu de votre PHP ne comporte pas d’accents, n’oublier pas de définir les headers PHP, ainsi que la balise meta HTML ; les deux en UTF-8.

🤣 Edit 2023 : lelelel, il faut également prendre en compte

  • l’encodage éventuel du fichier (visible dans VSCode en bas à droite)
  • l’encodage éventuel dans la base de données
    • 🚨 Gaffe, l’encodage de la base ne force
      • Ni l’encodage des tables
      • Ni l’encodage des champs
        • On retrouve parfois des champs obscur / au fin fond / colonne 69 avec une encodage ISO-7891-LOL
  • le mauvais encodage de données, dans une base de données bien encodée
    • Ex: jean-michel stagiaire qui à tapé un encode/décode du pif alors qu’il n’y en avait pas besoin, ce qui a enregistré des données mal encodées dans la BDD, mais considérée comme stockée dans le bon encodage il est différent c’est tout
  • l’encodage lors de la communication entre PHP & la base de données
    • Comme d’hab le mieux ça reste de faire du vaudou du pif de checker stackoverflow, ou mieux de tester les différentes solutions proposées sur la doc officielle en commentaires (Rechercher > “UTF”), les plus récents.
    • Go checker PDO > setAttributes ça fait pas de mal afin d’afficher correctement les erreurs également
      • A noter que pour afficher les éventuelles erreurs SQL il faut try catch à plusieurs endroits (connexion, préparation & exécution de la requête). J’ai un boilerplate qui traîne quelque part.

Bon courage 😉

Edit 2023 : clair y’en a besoin pour ce genre de bails huehue.

Plus de détails dans l’article dédiay.

Anciens commentaires

Thomas LIMIN / 10/05/2022

Bonjour

Pour que MS-Excel ouvre correctement un fichier csv encodé en UTF-8, c’est à dire en détectant correctement l’encodage et donc en affichant correctement les caractères non ASCII, une solution est d’intégrer un BOM (https://www.unicode.org/faq/utf_bom.html#BOM) en début de fichier csv. Ansi, il est possible d’encoder son fichier csv en UTF-8, tout en garantissant son ouverture correcte par MS-Excel. (vérifié avec MS-Excel 365 16.0.13801.21072 64bits)

Sandrine A. / 22/10/2022

Merci pour l’astuce!


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *