CSV avec des caractères cassés comme é ou ? au lieu de é : cause et solution
Vous exportez une liste de clients, vous l’ouvrez ailleurs, et des noms comme Lefèvre s’affichent en Lefèvre ou Lef?vre. Les données ne sont pas abîmées. Le programme a simplement lu les octets avec un autre encodage de caractères que celui utilisé pour les écrire.
Mis à jour:
La cause : deux encodages pour les mêmes lettres
Un fichier CSV est du texte brut sans aucune indication sur l’encodage de ses caractères. Aujourd’hui, la plupart des programmes écrivent en UTF-8, où des lettres comme é, è ou ç occupent deux octets. Les anciens programmes Windows et beaucoup de versions d’Excel utilisent Windows-1252, où ces mêmes lettres occupent un octet.
Quand de l’UTF-8 est lu comme du Windows-1252, chaque caractère spécial devient deux symboles bizarres, par exemple é au lieu de é. Quand du Windows-1252 est lu comme de l’UTF-8, l’octet isolé est invalide et apparaît le plus souvent comme un point d’interrogation ou un symbole de remplacement.
Situations typiques
Une boutique en ligne, un CRM ou un formulaire web exporte en UTF-8, et un double-clic ouvre le fichier dans Excel avec des accents cassés. Cela arrive parce que beaucoup de versions d’Excel ne reconnaissent l’UTF-8 que si le fichier commence par une marque invisible appelée indicateur d’ordre des octets.
L’inverse existe aussi : une liste enregistrée depuis Excel en CSV classique est importée dans un outil de newsletter ou un script et affiche des points d’interrogation, parce que ce programme attend de l’UTF-8.
Le séparateur pose un problème voisin. Dans les pays où la virgule sert de séparateur décimal, comme la France, Excel attend des points-virgules entre les colonnes : un fichier séparé par des virgules peut alors se retrouver entier dans une seule colonne.
Ouvrir correctement un fichier UTF-8 dans Excel
Au lieu de double-cliquer, importez le fichier. Excel demande alors l’encodage et le séparateur au lieu de les deviner.
- Ouvrez un classeur vide dans Excel.
- Choisissez Données, puis À partir d’un fichier texte/CSV, et sélectionnez le fichier.
- Réglez Origine du fichier sur 65001 : Unicode (UTF-8) et vérifiez l’aperçu.
- Choisissez le bon délimiteur si les colonnes ne sont pas encore séparées, puis chargez les données.
- À l’enregistrement, choisissez CSV UTF-8 pour que le programme suivant lise le fichier correctement.
Convertir un ancien CSV d’Excel en UTF-8
Si un fichier issu d’Excel affiche des points d’interrogation dans un autre programme, convertissez-le une fois. Le convertisseur de données essaie d’abord l’UTF-8 et se replie sur Windows-1252 quand les octets ne sont pas de l’UTF-8 valide, ce qui permet de lire correctement les accents. Il écrit ensuite un UTF-8 propre en CSV, JSON ou autre format, et reconnaît seul le point-virgule, la virgule et la tabulation comme séparateurs.
Convertir plusieurs fois le même fichier dans le mauvais sens peut abîmer le texte définitivement, par exemple quand Lefèvre est de nouveau enregistré en UTF-8. Repartez toujours de l’export d’origine.
Vérifier que rien n’a changé
Après une conversion, il vaut la peine de confirmer que seul l’encodage a changé et pas le contenu. Comparez les deux fichiers CSV à l’aide d’une colonne clé comme le numéro client : l’outil liste les cellules modifiées, les lignes ajoutées et les lignes manquantes, si bien qu’un import raté saute aux yeux avant d’utiliser la liste.
