Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/11/2008, à 11: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, à 12: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, à 12:53

HP

Re : script bash et convertion d'accents

chez moi en "console" pas de souci… donc, cf la question de genma wink


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#4 Le 04/11/2008, à 13: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, à 15: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 big_smile, 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, à 15: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, à 15:44)


Xubuntu Karmic !

Hors ligne

#7 Le 04/11/2008, à 16:42

HP

Re : script bash et convertion d'accents

Alain.g a écrit :

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, à 16:48)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#8 Le 04/11/2008, à 18:07

Alain.g

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...)

HP a écrit :

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.”

HP a écrit :

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, à 18:08

Link31

Re : script bash et convertion d'accents

HP a écrit :

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, à 19:23)

Hors ligne

#10 Le 04/11/2008, à 18:49

HP

Re : script bash et convertion d'accents

Alain.g a écrit :
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 wink

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, à 19:01

HP

Re : script bash et convertion d'accents

Advanced Bash−Scripting Guide a écrit :

The GNU version of tr resembles the BSD one.

Ok, ceci explique sûrement celà wink


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#12 Le 07/11/2008, à 19: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