Re: [SSFR] quel langage ? |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
On 2005-12-02 10:57:41 +0000, Sébastien Aperghis-Tramoni wrote:
> Les locales (comme LC_MESSAGES) reflètent la manière d'afficher les
> messages et données, mais pas la manière d'entrer les données.
Si, aussi la manière dont les données d'entrée doivent être interprétées
(par souci de cohérence). Si j'écris "echo abcdé > fichier", alors le
fichier contiendra une ligne "abcdé" encodée dans les locales courantes
(encodage donné par LC_CTYPE).
Ensuite, chaque fichier peut avoir son propre encodage, mais s'il n'y
a aucun moyen de le reconnaître, on doit supposer que c'est l'encodage
spécifié par les locales.
> $ echo $LANG $LANGUAGE $LC_ALL
> fr_FR.UTF-8 fr_FR.UTF-8:fr fr_FR.UTF-8
> $ perl -e 'print scalar reverse "abcdé"; print "\n"'
> édcba
Ça ne marche pas ici:
$ locale
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=fr_FR.UTF-8
$ echo abcdé | od -Ax -txC -v
000000 61 62 63 64 c3 a9 0a
000007
$ perl -e 'print scalar reverse "abcdé"; print "\n"' | od -Ax -txC -v
000000 a9 c3 64 63 62 61 0a
000007
au lieu de c3 a9 64 63 62 61 0a.
C'est avec perl v5.8.7 (Debian).
Pour que ça fonctionne, il faut un "use utf8;" au début: dans ce cas,
la chaîne litérale est reconnue comme étant en UTF-8.
$ perl -e 'use utf8; print scalar reverse "abcdé"; print "\n"' | od -Ax -txC -v
000000 e9 64 63 62 61 0a
000006
mais la sortie se fait en ISO-latin1. L'option -C permet d'avoir une
sortie en UTF-8 (mais cette option -C n'a aucun effet sur la chaîne
litérale, si bien que le "use utf8;" est toujours nécessaire).
--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA