iso8859-1, utf8 et sed

Daniel Caillibaud ml at editionsdidier.com
Fri Aug 24 13:19:05 CEST 2007


Emmanuel Bouthenot a écrit :
>> echo tést|iconv -t ISO8859-1 -f utf8|sed -e 's/[^a-z0-9_\-\.]/_/g;'
> 
> je te conseille l'option translit de iconv :
 >
 > echo tést|iconv -t ascii//translit -f utf8

le "echo tést|iconv -t ISO8859-1 -f utf8" n'est là que pour pouvoir donner des caractères iso à sed ;-), pour tester.

Mon pb est que mon script sed est censé fonctionner avec des chaines UTF8, mais qu'il peut arriver par erreur que ce 
soit de l'iso (ou n'importe quoi d'autre).
Et dans ce cas ça passe au travers sans signaler d'erreur.

> sinon tu as des outils comme convmv

Oui, mais il faut connaitre l'encodage de départ. Comme en théorie c'est de l'utf8... normalement pas besoin.
Je pourrais essayer de le faire tourner en n-importe_quoi->utf8 et vérifier que je n'ai que du "Skipping, already UTF-8" 
mais c'est vraiment bourrin car à priori inutile dans 99,9% des cas.

C'est pour ça que je pensais utiliser sed pour remplacer tous les caractères non utf8 sans me poser de question.

Mais au départ, c'est surtout comprendre pourquoi un caractère iso affiché en UTF8 (�) ne match pas avec le pattern 
[^a-z0-9_\-\.] ?

-- 
Daniel


More information about the Shell mailing list