93 votes

Comment supprimer les caractères non UTF-8 d'un fichier texte ?

J'ai un tas de fichiers arabes, anglais et russes qui sont codés en utf-8. En essayant de traiter ces fichiers à l'aide d'un script Perl, j'obtiens cette erreur :

Malformed UTF-8 character (fatal)

En vérifiant manuellement le contenu de ces fichiers, j'y ai trouvé des caractères étranges. Je cherche maintenant un moyen de supprimer automatiquement ces caractères des fichiers.

Y a-t-il un moyen de le faire ?

175voto

Palantir Points 11889

Cette commande :

iconv -f utf-8 -t utf-8 -c file.txt

nettoiera votre fichier UTF-8, en sautant tous les caractères invalides.

-f is the source format
-t the target format
-c skips any invalid sequence

0voto

Steven Penny Points 18523

iconv peut le faire

iconv -f cp1252 foo.txt

0voto

Charles Knell Points 322

Votre méthode doit être lue octet par octet et comprendre et apprécier pleinement la construction des caractères par octet. La méthode la plus simple est d'utiliser un éditeur qui peut lire n'importe quoi mais qui ne produit que des caractères UTF-8. Textpad est un choix possible.

0voto

Mythos Points 686

Aucune des méthodes proposées ici ou sur d'autres questions similaires n'a fonctionné pour moi. Finalement, ce qui a fonctionné, c'est simplement d'ouvrir le fichier dans Sublime Text 2. Allez dans Fichier > Réouvrir avec Encodage > UTF-8. Copiez l'intégralité du contenu du fichier dans un nouveau fichier et enregistrez-le.

Ce n'est peut-être pas la solution attendue, mais j'aimerais que cela aide quelqu'un, car je me débats depuis des heures avec ce problème.

-4voto

atul jha Points 43
cat foo.txt | strings -n 8 > bar.txt

fera l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X