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
- Excel > exporter utf 8 (dans les paramètres d’export > web)
- Ouvrir sous
AtomVSCode - Définir encodage ISO 8859-1
- Package “Convert to UTF8” > Utiliser sur le fichier



Importer
- Excel > Nouveau fichier
- Onglet Données
- Nouvelle requête
- À partir d’un fichier > CSV > Choisir > Importer
- Origine du fichier : 65001 / Unicode UTF-8
- Note : Attention aux chiffres : ne pas formater, par exemple si import de numéros de téléphone
- 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
- 🚨 Gaffe, l’encodage de la base ne force
- 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 pifalors 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 encodageil est différent c’est tout
- Ex: jean-michel stagiaire qui à tapé un encode/décode
- 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 pifde 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.
- Comme d’hab le mieux ça reste de
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!
Laisser un commentaire