CSV avec des caractères bizarres : pourquoi et comment corriger
Des caractères bizarres comme « é » ou « Сума » signifient que le CSV a été enregistré dans un encodage et ouvert comme s’il était dans un autre : les lettres sont toujours dans le fichier, elles sont simplement mal décodées. Ouvrez-le avec le bon encodage (la visionneuse CSV le détecte automatiquement) et enregistrez une copie en UTF-8. Les points d’interrogation (« ???? ») sont un cas à part : ils signifient en général que les lettres ont déjà été perdues au moment où le fichier a été écrit.
L’encodage en une minute
Un fichier CSV est du texte brut, et sur le disque, du texte n’est qu’une suite de nombres (des octets). Un encodage est la table qui indique quel nombre correspond à quelle lettre. Pour les lettres anglaises de base et les chiffres, presque tous les encodages sont d’accord : c’est pourquoi les montants de votre export bancaire s’affichent bien alors que les noms et les libellés se transforment en bouillie.
Les trois que vous croiserez dans les exports de logiciels de comptabilité et de banques :
- UTF-8 : la norme moderne. Il peut stocker tous les alphabets dans un même fichier. Les lettres qui sortent de l’anglais de base occupent chacune deux octets ou plus.
- Windows-1251 : un ancien encodage sur un octet pour le cyrillique (ukrainien, russe, bulgare, serbe). Beaucoup d’anciens logiciels de comptabilité exportent encore dans cet encodage.
- Windows-1252 : l’ancien encodage sur un octet des langues d’Europe occidentale : é, ü, ñ, ø, € et ainsi de suite.
En général, le fichier n’indique pas lui-même quel encodage il utilise. Le programme qui l’ouvre doit deviner, et s’il se trompe, vous obtenez du mojibake, le nom technique de ce texte brouillé.
Lire la bouillie : ce que révèle chaque motif
Le type de bouillie est un indice sur ce qui s’est mal passé.
| Vous voyez | Vous attendiez | Ce qui s’est passé |
|---|---|---|
é, ü, € |
é, ü, € | Fichier UTF-8 ouvert en Windows-1252 |
Сума (beaucoup de Ð et de Ñ) |
Сума | Cyrillique en UTF-8 ouvert en Windows-1252 |
Ñóìà (lettres latines accentuées) |
Сума | Fichier Windows-1251 ouvert en Windows-1252 |
Cafй |
Café | Fichier Windows-1252 ouvert en Windows-1251 |
� (losange noir avec un ?) |
n’importe quelle lettre | Fichier en ancien encodage ouvert en UTF-8 |
???? |
n’importe quelle lettre | Lettres perdues à l’enregistrement du fichier |
Les paires comme « Ã » + quelque chose ou « Ð »/« Ñ » + quelque chose sont la signature d’un fichier UTF-8 lu avec un ancien encodage : chaque lettre non anglaise occupe deux octets en UTF-8, et l’ancienne table affiche chaque octet comme un symbole distinct. C’est une bonne nouvelle : rien n’est perdu, et ouvrir le fichier en UTF-8 règle le problème.
Les simples points d’interrogation sont une mauvaise nouvelle. Ils apparaissent généralement quand un programme a tenté d’enregistrer du texte dans un encodage qui n’a pas de place pour ces lettres (par exemple du cyrillique en Windows-1252) et les a toutes remplacées par ?. Les lettres d’origine ne sont plus dans le fichier, et aucune visionneuse ne peut les faire revenir. La solution est de refaire l’export depuis le système d’origine, en choisissant UTF-8 ou le bon encodage régional si la fenêtre d’export le propose.
Le BOM : pourquoi Excel se trompe avec l’UTF-8
Un fichier UTF-8 peut commencer par trois octets invisibles appelés indicateur d’ordre des octets (BOM, pour byte order mark). C’est une indication qui dit « ce fichier est en UTF-8 ».
Quand vous double-cliquez sur un CSV, Excel s’appuie beaucoup sur cette indication. Avec un BOM, il lit généralement l’UTF-8 correctement ; sans BOM, il suppose souvent l’ancien encodage de votre ordinateur, et c’est exactement comme ça qu’un export UTF-8 parfaitement valide de votre banque se transforme en « Сума ». D’autres programmes font l’inverse et affichent le BOM comme des caractères parasites, du type , au début du premier en-tête de colonne. Si vous voyez ça, le fichier est en UTF-8 et le BOM est affiché comme du texte.
Solution 1 : l’ouvrir avec détection automatique
Le plus rapide est de laisser un outil détecter l’encodage à votre place. La visionneuse CSV d’Opener essaie d’abord l’UTF-8, puis se rabat sur Windows-1251 ou Windows-1252 selon le texte : les noms et les libellés s’affichent correctement, sans assistant d’importation. Elle détecte aussi le séparateur : virgule, point-virgule, tabulation ou barre verticale.
Le fichier est lu dans votre navigateur et n’est envoyé nulle part, ce qui compte pour des fiches de paie, des factures ou des relevés bancaires. Pour réparer le fichier en vue d’autres programmes, utilisez le bouton d’export : vous obtenez une copie propre du tableau en UTF-8 (la vue actuelle : videz donc la recherche si vous voulez toutes les lignes). Si votre problème est que tout atterrit dans une seule colonne plutôt que des lettres brouillées, voir pourquoi un CSV s’ouvre dans une seule colonne.
Solution 2 : l’importer dans Excel avec la bonne « Origine du fichier »
Ne double-cliquez pas sur le fichier. Ouvrez plutôt un classeur vide et lancez, depuis l’onglet Données, l’import à partir d’un fichier texte/CSV. La fenêtre d’aperçu comporte une liste Origine du fichier où vous choisissez l’encodage :
- 65001 : Unicode (UTF-8) pour les fichiers qui affichent
éouСума; - l’option cyrillique (Windows), 1251, pour les anciens exports en cyrillique ;
- l’option Europe occidentale (Windows), 1252, pour les anciens exports d’Europe occidentale.
Passez de l’une à l’autre en regardant l’aperçu : dès que les noms s’affichent correctement, vous tenez la bonne. Chargez alors les données. Si vous devez transmettre le fichier, enregistrez-le depuis Excel avec le type « CSV UTF-8 (délimité par des virgules) » plutôt qu’avec le type CSV classique, qui peut réutiliser l’ancien encodage.
Solution 3 : Google Sheets, LibreOffice ou un éditeur de texte
Google Sheets. Importer un CSV dans Google Sheets (Fichier → Importer) fonctionne bien avec les fichiers UTF-8, et la fenêtre d’import permet de choisir le séparateur. C’est une voie moins fiable pour les anciens encodages : si un export en Windows-1251 ou Windows-1252 reste brouillé, convertissez-le en UTF-8 avec l’une des autres méthodes et importez cette copie.
LibreOffice Calc. Quand vous ouvrez un CSV, LibreOffice affiche une fenêtre d’import de texte avec une liste Jeu de caractères. Choisissez Unicode (UTF-8), cyrillique (Windows-1251) ou Europe occidentale (Windows-1252) et l’aperçu se met à jour immédiatement. Il est gratuit et fonctionne sous Windows, macOS et Linux.
Un éditeur de texte. Des éditeurs comme le Bloc-notes sous Windows, TextEdit sous macOS ou un éditeur de code comme VS Code permettent de choisir l’encodage à l’enregistrement. Le piège : l’éditeur doit d’abord ouvrir le fichier avec le bon encodage. Si le texte s’affiche correctement dans l’éditeur, enregistrez-le en UTF-8. S’il est déjà brouillé à ce stade, l’enregistrer ne fera que conserver la bouillie : rouvrez-le d’abord avec le bon encodage.
Questions fréquentes
Peut-on réparer des « ???? » dans un CSV ?
En général, non. Les points d’interrogation signifient que les caractères ont été remplacés au moment où le fichier a été écrit : les lettres d’origine ne sont donc plus dans le fichier. Refaites l’export depuis le logiciel de comptabilité ou la banque, en choisissant UTF-8 si possible.
Quel encodage choisir pour enregistrer ou exporter ?
L’UTF-8. Il stocke tous les alphabets et tous les programmes modernes le comprennent. Si vos collègues l’ouvrent par double-clic dans Excel, utilisez l’option « CSV UTF-8 » d’Excel pour que le fichier commence par un BOM.
Changer l’encodage va-t-il modifier mes nombres ?
Non. Les chiffres, les points et les virgules sont identiques en UTF-8, Windows-1251 et Windows-1252 : les montants et les dates ne bougent pas. Seules les lettres qui sortent de l’anglais de base changent.
Est-ce sans risque de réparer un export bancaire en ligne ?
Seulement si l’outil ne l’envoie pas sur un serveur. La visionneuse CSV décode et exporte le fichier entièrement dans votre navigateur : le relevé ne quitte jamais votre appareil.