Comment supprimer des caractères non UTF-8 d’un fichier ?

By Corentin BURTIN

Les fichiers contenant des caractères non UTF-8 posent souvent problème lors de leur traitement.

Que ce soit dans un script, une base de données ou un export CSV, ces anomalies peuvent bloquer des workflows critiques. Identifier et nettoyer ces caractères est donc une compétence incontournable pour tout développeur, administrateur système ou analyste de données.

À retenir :

  • Utilisez iconv avec l’option -c pour nettoyer efficacement un fichier.
  • Vérifiez l’encodage avec file, chardet ou Notepad++ selon votre système.
  • Automatisez le traitement des arborescences complètes avec des scripts Bash intelligents.

Comprendre les causes des caractères non UTF-8 dans vos fichiers

« Maîtriser l’encodage, c’est maîtriser la portabilité des données. »

Paul Girard, ingénieur systèmes

Les caractères non UTF-8 proviennent souvent de fichiers encodés en ISO-8859-1, Windows-1252 ou MacRoman. Ces encodages anciens persistent encore dans de nombreux exports d’applications.

Les sources fréquentes de caractères non UTF-8

  • Outils métiers non paramétrés en UTF-8.
  • Échanges entre systèmes Windows et Linux.
  • Importations de fichiers CSV corrompus ou mal convertis.

Identifier les caractères non UTF-8 selon votre environnement

« On ne peut corriger ce qu’on ne sait pas identifier. »

Claire Lemoine, formatrice DevOps

Avant toute suppression, il est indispensable d’identifier où se trouvent les caractères fautifs.

A lire également :  Comment héberger sur IONOS ?

Méthodes classiques d’identification

  • Sous Linux : grep -axv '.*' fichier pour afficher les lignes non UTF-8.
  • Commande file -i fichier.txt pour connaître l’encodage détecté.
  • Utilitaire Python chardet pour une analyse plus fine.

Les meilleures méthodes pour supprimer les caractères non UTF-8

« La simplicité de iconv en fait un allié incontournable. » — Nadia Fournier, consultante freelance Linux

Nettoyage avec iconv

iconv -f utf-8 -t utf-8 -c fichier > fichier_nettoye

  • -f et -t définissent l’encodage source et cible (UTF-8).
  • -c supprime les caractères illisibles sans casser la structure.

Tableau des meilleures solutions pour supprimer les caractères non UTF-8

Outil / MéthodeSystèmePoints forts
iconvLinux/MacRapide, scriptable, très fiable
Notepad++WindowsInterface graphique, simple d’utilisation
Sublime TextMulti-plateformeBon pour copier/coller nettoyé en UTF-8
chardet + iconvPython/LinuxAnalyse + nettoyage automatisé
Scripts BashLinuxIdéal pour traitement massif d’arborescences

Nettoyage via éditeurs de texte pour utilisateurs Windows

« Notepad++ m’a sauvé d’une importation CSV foireuse sur Prestashop. »

Julien, intégrateur web
  1. Ouvrez votre fichier dans Notepad++.
  2. Menu « Encodage » → « Convertir en UTF-8 ».
  3. Enregistrez le fichier nettoyé.

Pour Sublime Text :

  • Reopen With Encoding > UTF-8, puis enregistrez sous un nouveau fichier.

Intégration dans des scripts automatisés pour grandes volumétries

Exemple de script Bash récursif

find ./dossier -type f | while read fn; do
iconv -f ISO-8859-1 -t UTF-8 -c « $fn » > « $fn.tmp »
mv « $fn.tmp » « $fn »
done

Ajoutez une détection automatique de l’encodage avec file et adaptez le FROM en conséquence.

Cas spécifiques : CSV, accents, BOM et interopérabilité

« Les fichiers CSV sont les pires ennemis de l’encodage propre. » — Loïc Bernard, Data Engineer

Préserver les accents et le BOM

Utilisez iconv avec l’option //TRANSLIT pour garder les caractères lisibles :

A lire également :  Comment utiliser la commande printf de Bash sous Linux ?

iconv -f ISO-8859-1 -t UTF-8//TRANSLIT fichier

En PHP :

$ligne = iconv(« ISO-8859-1 », « UTF-8//IGNORE », $ligne);

Et vérifiez les locales système (évitez C ou POSIX).

Et vous, quelle méthode utilisez-vous pour nettoyer vos fichiers ? Partagez vos astuces ou posez vos questions ci-dessous !