Joujou avec les encodages 8859-1, UTF-8 etc
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 10 13 (ou l’inverse) en un seul ( 10 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.