Joujou avec les encodages 8859-1, UTF-8 etc

closeCet article a été publié il y a 11 ans 9 mois 17 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

A l’occasion de l’écriture d’un script Python pour convertir un CSV-dégueu en XML-UTF8, le tout en environnement windows+linux et partant d’un CSV issu d’un Excel issu de copier-coller dégueulasses, j’ai eu à jouer avec des conversions de charset, de formats UNIX/Windows etc etc
Ca m’a permis de découvrir 2/3 outils, objet de cet article ; je passe sur la multitude d’autres problèmes de nettoyage du contenu issu du copier-coller : guillemets relookés par je ne sais qui (Word ?), tirets relookés aussi etc…

Les basiques :

  • file : permet d’identifier un type de fichier, notamment, pour du texte brut, s’il est encodé en ISO-machin ou en UTF-8. A noter, si le texte en question est à l’intérieur d’un script, enfin bref, de quelque chose enrobant ce texte, « file » se limitera à détecter le type de script, par exemple. Dans ce cas, extraire le texte en question dans un fichier à part (via des « grep ») afin d’analyser l’encodage de ce texte. J’ai pas trouvé plus simple
  • dos2unix : conversion des fins de lignes DOS (2 octets \010\013 (ou l’inverse) en un seul (\010 ou l’autre, je ne sais jamais :). Si vous êtes passés par un transfert FTP type ASCII, c’est fait totomatiquement. Mais en SFTP ou autre chose, niet.
  • unix2dos : devinez

Ensuite :

  • tcs : permet de convertir un fichier encodé avec un charset vers un autre, exemple : tcs -f 8859-1 -t utf source > dest. Faites des « file » ensuite pour voir.
  • rxp : valide la syntaxe XML (et l’encodage utilisé) d’un fichier XML
  • od : affiche en hexa, ascii, octal (etc) un fichier. On peut cumuler et mettre en parallèle l’ascii avec l’hexa, par exemple

Voilà, c’est tout.

2 comments

  1. Personnellement Geany arrive à bien faire les choses quand il s’agit de 1 ou 2 fichiers, pour convertir tout un projet par exemple php il faut passer par de tel outils.
    Sinon j’avais utilisé iconv :
    iconv -f $CHARSET_FROM -t $CHARSET_TO $OUTPUT_FILE

  2. ah oui, tiens, iconv, ça me revient en mémoire maintenant 🙂
    Côté outils graphiques…. pour du one shot, je dis pas. Pour du traitement de masse…. sauf qd l’éditeur a réinventé la roue, mieux vaut retourner à la ligne de commande

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.