Back to Blog

Comment réparer un fichier CSV corrompu : guide complet avec exemples

Published: November 24, 2025

Comment réparer un fichier CSV corrompu : guide complet avec exemples

Vous ouvrez un fichier CSV et les colonnes sont décalées, des caractères bizarres apparaissent, ou des lignes entières sont manquantes. Le fichier est corrompu. Avant de demander un nouvel export, essayez ces méthodes de diagnostic et de réparation — elles résolvent 90 % des cas.

Symptômes d'un CSV corrompu

Ouvrez votre fichier dans CSV Viewer pour identifier rapidement le problème :

| Symptôme | Cause probable |

|----------|----------------|

| Colonnes décalées | Guillemet non fermé ou séparateur incohérent |

| Caractères é, è,  | Mauvais encodage (UTF-8 lu comme Latin-1 ou inversement) |

| Lignes fusionnées | Retour à la ligne dans un champ non quoté |

| Symboles  en début de fichier | BOM UTF-8 non géré |

| Données tronquées | Export interrompu ou limite de taille atteinte |

| Colonnes en trop sur certaines lignes | Virgule non échappée dans les données |

Cause n°1 : Guillemets mal fermés

C'est le problème le plus fréquent. Un guillemet ouvrant sans guillemet fermant fait « déborder » un champ sur les lignes suivantes.

Exemple de fichier cassé


nom,description,prix

Widget A,"Un produit utile,19.99

Widget B,"Un autre produit",29.99

Ligne 2 : le guillemet après "Un produit utile n'est jamais fermé. Le parseur considère tout le texte jusqu'au prochain guillemet comme faisant partie du même champ.

Correction


nom,description,prix

Widget A,"Un produit utile",19.99

Widget B,"Un autre produit",29.99

Comment trouver les guillemets cassés

bash

Compter les guillemets par ligne — un nombre impair indique un problème

awk '{n=gsub(/"/, ""); if (n % 2 != 0) print NR": "$0}' fichier.csv

En Python :

python

with open('fichier.csv', encoding='utf-8') as f:

for i, line in enumerate(f, 1):

if line.count('"') % 2 != 0:

print(f"Ligne {i} : nombre impair de guillemets")

print(f" → {line.strip()[:100]}")

Cause n°2 : Problème d'encodage

L'encodage est la deuxième cause la plus fréquente de corruption apparente.

Diagnostic

bash

Détecter l'encodage du fichier

file -bi fichier.csv

Résultat attendu : text/plain; charset=utf-8

En Python avec chardet :

python

import chardet

with open('fichier.csv', 'rb') as f:

result = chardet.detect(f.read(10000))

print(f"Encodage détecté : {result['encoding']} (confiance : {result['confidence']:.0%})")

Conversions courantes

bash

Latin-1 (Windows) → UTF-8

iconv -f WINDOWS-1252 -t UTF-8 fichierlatin.csv > fichierutf8.csv

UTF-8 avec BOM → UTF-8 sans BOM

sed -i '1s/^\xEF\xBB\xBF//' fichier.csv

Tableau des encodages courants

| Encodage source | Symptôme typique | Solution |

|----------------|-----------------|----------|

| Windows-1252 lu comme UTF-8 | é au lieu de é | Convertir de Windows-1252 vers UTF-8 |

| UTF-8 lu comme Latin-1 | é ou ’ | Ouvrir explicitement en UTF-8 |

| UTF-8 avec BOM |  devant le premier en-tête | Supprimer le BOM |

| ISO-8859-1 | Accents cassés dans les noms | Convertir vers UTF-8 |

Cause n°3 : Séparateur incohérent

Le fichier utilise un mélange de virgules et de points-virgules, ou le séparateur ne correspond pas à ce que votre outil attend.

Diagnostic

bash

Compter le nombre de virgules et de points-virgules par ligne

head -5 fichier.csv | awk -F'' '{c=gsub(/,/,""); s=gsub(/;/,""); print "Ligne "NR": , ="c" ; ="s}'

Correction

bash

Remplacer les points-virgules par des virgules

sed 's/;/,/g' fichierfr.csv > fichierstandard.csv

Attention : cette approche simple ne fonctionne que si les champs ne contiennent pas eux-mêmes des points-virgules. Pour un remplacement fiable, utilisez un parseur CSV :

python

import csv

with open('fichier_fr.csv', newline='', encoding='utf-8') as infile:

reader = csv.reader(infile, delimiter=';')

with open('fichier_standard.csv', 'w', newline='', encoding='utf-8') as outfile:

writer = csv.writer(outfile, delimiter=',')

for row in reader:

writer.writerow(row)

Cause n°4 : Retours à la ligne dans les champs

Un champ contenant un retour à la ligne doit être entre guillemets. Sans guillemets, le parseur interprète le retour comme une nouvelle ligne.

Exemple cassé


nom,adresse,ville

Jean Dupont,12 rue de la Paix

Appartement 3,Paris

Correction


nom,adresse,ville

Jean Dupont,"12 rue de la Paix\nAppartement 3",Paris

Détection automatique

python

import csv

with open('fichier.csv', newline='', encoding='utf-8') as f:

reader = csv.reader(f)

header = next(reader)

nb_colonnes = len(header)

for i, row in enumerate(reader, 2):

if len(row) != nb_colonnes:

print(f"Ligne {i} : {len(row)} colonnes au lieu de {nb_colonnes}")

print(f" → {row}")

Cause n°5 : Caractères invisibles

Des caractères de contrôle invisibles (null bytes, caractères de formatage Unicode) peuvent se glisser dans les exports de bases de données.

bash

Supprimer les null bytes

tr -d '\000' < fichier.csv > fichier_clean.csv

Supprimer les caractères non imprimables (sauf retours à la ligne et tabulations)

tr -cd '\011\012\015\040-\176' < fichier.csv > fichier_clean.csv

Normaliser les fins de ligne (Windows → Unix)

sed -i 's/\r$//' fichier.csv

Procédure de réparation étape par étape

Quand vous recevez un CSV qui ne fonctionne pas, suivez cette procédure :

Étape 1 : Inspection visuelle

Ouvrez le fichier dans CSV Viewer. L'outil détecte automatiquement le séparateur et l'encodage. Si les colonnes sont alignées, le fichier n'est probablement pas corrompu — le problème vient de l'outil d'import.

Étape 2 : Vérifier l'encodage

bash

file -bi fichier.csv

Si l'encodage n'est pas UTF-8, convertissez-le.

Étape 3 : Vérifier le nombre de colonnes

bash

awk -F',' '{print NF}' fichier.csv | sort | uniq -c | sort -rn

Toutes les lignes doivent avoir le même nombre de colonnes.

Étape 4 : Chercher les guillemets non fermés

Utilisez le script Python ci-dessus pour trouver les lignes problématiques.

Étape 5 : Nettoyer et re-tester

Après chaque correction, rechargez le fichier dans CSV Viewer pour vérifier le résultat.

Outils utiles

| Outil | Usage |

|-------|-------|

| CSV Viewer | Inspection rapide, détection automatique du séparateur |

| Convertisseur Excel ↔ CSV | Reconvertir un fichier Excel corrompu en CSV propre |

| csvkit (csvclean) | Nettoyage automatique des erreurs courantes |

| iconv | Conversion d'encodage en ligne de commande |

| sed / awk | Corrections de texte rapides |

Prévention

Pour éviter de recevoir des CSV corrompus :

  • Spécifiez l'encodage lors de l'export : toujours UTF-8
  • Utilisez un vrai parseur CSV (pas split(',')) pour générer vos fichiers
  • Testez l'export en ouvrant le résultat dans CSV Viewer avant de l'envoyer
  • Documentez le format : séparateur, encodage, colonnes attendues
  • Créez des fichiers de test avec le CSV Creator pour valider votre pipeline d'import

Conclusion

Un CSV corrompu n'est pas une fatalité. Dans la grande majorité des cas, le problème vient des guillemets, de l'encodage ou du séparateur. Avec les bons outils de diagnostic et une procédure systématique, la réparation prend quelques minutes. Et pour éviter le problème en amont, vérifiez toujours vos exports avec un viewer CSV avant de les partager.