Re: [SSFR] quel langage ? |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
Selon Vincent Lefevre <vincent@xxxxxxxxxx>:
> Avec un encodage qui n'est pas multibyte comme UTF-8, on peut utiliser
> directement la fonction reverse de Perl:
>
> print scalar reverse "abcdefg";
>
> Malheureusement, reverse permute les octets et non les caractères,
> donc ça ne fonctionne pas en UTF-8. En est-il de même pour python?
Cette remarque correspond-elle à du vécu ou à une supposition ?
Dans tous les cas, reverse() fonctionne avec UTF-8 depuis Perl 5.8 :
$ cat chars.utf8.txt
à â ä
é è ê ë
ì î ï
ò ô ö
ù û ü
$ perl -e 'open(F,"<:utf8",shift); print scalar reverse <F>' chars.utf8.txt
ou
$ perl -Ci -e 'open(F,shift); print scalar reverse <F>' chars.utf8.txt
ü û ù
ö ô ò
ï î ì
ë ê è é
ä â à
Devel::Peek confirme que la chaîne lue est bien stockée en interne en
UTF-8 (présence de "UTF8 dans les flags) :
$ perl -Ci -MDevel::Peek -e 'open(F,shift); print Dump($line = <F>)'
chars.utf8.txt
SV = PV(0x10011ebc) at 0x1002ef8c
REFCNT = 1
FLAGS = (POK,pPOK,UTF8)
PV = 0x100251d8 " \303\240 \303\242 \303\244\n"\0 [UTF8 " \x{e0} \x{e2}
\x{e4}\n"]
CUR = 11
LEN = 80
--
Sébastien Aperghis-Tramoni
Close the world, txEn eht nepO.