Re: locales, utf8, sensibilité a la casse

Jeremy Monnet jmonnet at gmail.com
Wed Jan 4 17:31:39 CET 2006


On 1/4/06, Vincent Lefevre <vincent at vinc17.org> wrote:
> On 2006-01-04 16:20:38 +0100, Jeremy Monnet wrote:
> > Sur 2 machines je fais un grep, et le résultat différe. Après
> > recherche et essais, il se toruve que le problème est une problèmes de
> > locale :
> > Si LC_CTYPE est a "en_US", grep est sensible a la casse,
> > si LC_CTYPE est a "en_US.UTF-8" grep n'est pas sensible a la casse.
>
> grep n'est pas sensible à la casse, sauf si on utilise l'option -i.
grep EST sensible sauf si -i ?
>
> >  et la commande est :
> > grep -E '^[a-z]*art' essai
> >
> > Cartouche est trouvé en "en_US.UTF-8", mais pas en "en_US".
>
> Le problème est différent: tu utilises un intervalle, et un "man grep"
> dit:
>
>   Many locales sort characters in dictionary order, and in these
>   locales [a-d] is typically not equivalent to [abcd]; it might be
>   equivalent to [aBbCcDd], for example.
>
> Ici, avec en_US.UTF-8 et même fr_FR.UTF-8, Cartouche n'est pas trouvé.
> D'autre part, l'ordre du dictionnaire n'est-il pas défini par LC_COLLATE?
>
Arf, j'ai raté ce paragraphe dans le man :-(

Changer la valeur de LC_COLLATE ne change pas le résultat. Sur les 2
machines j'ai regardé les valeurs de toutes les variables indiquées
dans le man, seules 4 existaient (LANG, LC_COLLATE, LC_CTYPE,
LC_MESSAGES, toutes soit a en_US, soit à en_US.UTF-8). Seul le
changement de LC_CTYPE change le comportement.

D'autre part LC_ALL n'existe pas. Si je la mets à C (sans changer
LC_CTYPE, en en_US.UTF-8), Cartouche n'est pas trouvé.

Question subsidiaire : comment trouver la facon de trier les
caractères propre à une locale (a part faire l'essai) ?

Jeremy
--
Linux Registered User #317862
Linux From Scratch Registered User #16571
Please do not send me .doc, .xls, .ppt, as I will *NOT* read them.



More information about the Shell mailing list