#1 Le 04/11/2008, à 10:19
- karboxifene
script bash et convertion d'accents
Bonjour,
Voila je tente de faire un script en bash qui entre autres choses, fait une conversion des accents. Cependant malgrès plusieurs recherches, je ne comprends pas bien pourquoi les accents sont mal convertis
par exemple, ceci :
echo "à é è ü" | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"
donne :
Uc Ue Ui UU
au lieu de :
a e e u
il doit y avoir un problème de charset ou un truc du genre mais je ne vois pas comment regler ça....
Hors ligne
#2 Le 04/11/2008, à 11:09
- genma
Re : script bash et convertion d'accents
Le fichier de script est bien en UTF-8 ?
"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ? https://blog.genma.fr
Mon twitter? http://twitter.com/genma
Hors ligne
#3 Le 04/11/2008, à 11:53
- HP
Re : script bash et convertion d'accents
chez moi en "console" pas de souci… donc, cf la question de genma
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#4 Le 04/11/2008, à 12:40
- karboxifene
Re : script bash et convertion d'accents
Heu bonne question et je le sait comment ça ??????
Hors ligne
#5 Le 04/11/2008, à 14:05
- HP
Re : script bash et convertion d'accents
avec emacs, perso, à la fin de mes fichiers (en l'occurence des script shell ici), j'ai l'habitude de mettre ceci :
# Local Variables:
# mode: Shell-script
# coding: mule-utf-8
# End:
ce qui fixe l'encodage pour l document courant, si je ne me trompe, lors de sa sauvegarde et permet, surtout, à emacs de connaître l'encodage et le mode à utiliser (comme ici on aura pas d'extension pour un script shell) lors des éditions futures… après, pour les autres éditeurs, je n'en sais rien , puisque je n'utilise que rarement autre chose que mon emacs…
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#6 Le 04/11/2008, à 14:43
- Alain.g
Re : script bash et convertion d'accents
tr ne supporte pas l'UTF-8, on peut utiliser sed à la place : sed 'y/àè/ae/'
Voir aussi unaccent qui est fait pour cela (présent dans les dépôts) :
echo "à é è ü" | unaccent UTF-8
Dernière modification par Alain.g (Le 04/11/2008, à 14:44)
Xubuntu Karmic !
Hors ligne
#7 Le 04/11/2008, à 15:42
- HP
Re : script bash et convertion d'accents
tr ne supporte pas l'UTF-8
au risque de me répéter, ça fonctionne très bien chez moi…
#!/bin/bash
# Time-stamp: <2008-11-04 15:39:14 (~HP)>
echo "à é è ü" | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"
# Local Variables:
# mode: Shell-script
# coding: mule-utf-8
# End:
et je ne trouve rien dans le man à propos d'UTF-8… si ce n'est :
ENVIRONMENT
The LANG, LC_ALL, LC_CTYPE and LC_COLLATE environment variables affect
the execution of tr as described in environ(7).
un "outil bash" ne supportant pas l'UTF-8 ça me laisse dubitatif… mais pourquoi pas…
Dernière modification par HP (Le 04/11/2008, à 15:48)
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#8 Le 04/11/2008, à 17:07
- Alain.g
Re : script bash et convertion d'accents
au risque de me répéter, ça fonctionne très bien chez moi…
J'avais bien lu, mais tu disais "en console" et je ne suis pas censé savoir quel est l'encodage utilisé (d'autant plus que la dernière fois que j'ai lu un de tes messages, tu avais l'air d'utiliser Mac OSX...)
et je ne trouve rien dans le man à propos d'UTF-8… si ce n'est :
Je ne sais pas de quelle implémentation tu disposes, moi je parle de la version GNU Coreutils et c'est bien indiqué dans info coreutils (voir le manuel en ligne ici) : “Currently tr fully supports only single-byte characters.”
un "outil bash" ne supportant pas l'UTF-8 ça me laisse dubitatif… mais pourquoi pas…
tr n'est pas le seul des "outils coreutils" à ne pas supporter l'UTF-8, rien de nouveau et c'est bien connu. C'est même indiqué tout au début de la page Wikipédia :
Unfortunately, even a latest forthcoming coreutils version 6.10 does not properly support multibyte encodings, such as UTF-8. For example, command output from echo "abcабв" | tr [:lower:] [:upper:] in ru_RU.UTF-8 locale should produce ABCАБВ, but with GNU coreutils result is ABCабв. Thus, tr works well with ascii part of the string, but fails to operate with multibyte characters абв.
Xubuntu Karmic !
Hors ligne
#9 Le 04/11/2008, à 17:08
- Link31
Re : script bash et convertion d'accents
au risque de me répéter, ça fonctionne très bien chez moi…
Pas chez moi, avec emacs également. Et ça n'a jamais fonctionné d'ailleurs.
tr ne supporte pas l'unicode, les développeurs le reconnaissent eux-mêmes sur leurs mailing-lists.
Dernière modification par Link31 (Le 04/11/2008, à 18:23)
Hors ligne
#10 Le 04/11/2008, à 17:49
- HP
Re : script bash et convertion d'accents
HP a écrit :au risque de me répéter, ça fonctionne très bien chez moi…
J'avais bien lu, mais tu disais "en console" et je ne suis pas censé savoir quel est l'encodage utilisé (d'autant plus que la dernière fois que j'ai lu un de tes messages, tu avais l'air d'utiliser Mac OSX...)
ça fonctionne en console et en script…
pour Mac OS X ça fait longtemps qu'ils utilisent l'UTF-8 un peu partout …
après tr ne veut pas retourner de version… avec l'argument traditionnel… c'est dommage !
y a çà à la fin de info tr :
BSD October 11, 1997 BSD
pour les histoires d'encodages… bien, c'est dommage qu'ils en parlent sur les mailing lists et pas dans un man… m'enfin…
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#11 Le 04/11/2008, à 18:01
- HP
Re : script bash et convertion d'accents
The GNU version of tr resembles the BSD one.
Ok, ceci explique sûrement celà …
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#12 Le 07/11/2008, à 18:01
- karboxifene
Re : script bash et convertion d'accents
Wooow je vois que le sujet passionne.... je n'est pas eu le temps de revenir a mon script mais je vais tenter l'utilisation de sed comme le préconise Alain.G et je vous donnerais le résultat.... je fais ça ce soir!
Hors ligne