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