[Perl] utf8 et lettre à
minc
minc.charles at wanadoo.fr
Ven 16 Sep 10:37:38 CEST 2016
Bonjour Laurent,
Il me semble que le seul statement qui pose problème soit manquant :
/<toto>(*?)\s*</toto>/
En effet , le "no greeny" entraîne que le |NO-BREAK SPACE 'A0'
|
est mangé par la présence du \s (et je dois rectifier, la doc pour
unicode précise que ce caractère fait partie du groupe s
http://perldoc.perl.org/perlrecharclass.html).
Il s'ensuit donc que le 'à' en bytes 'C3 AO' se retrouve amputer du
second byte, d'où
le résultat inattendu.
Merci et en espérant donc que le pb n'existe pas en Perl6.
Cordialement.
Charles
Le 15/09/2016 23:04, Laurent Rosenfeld a écrit :
> Bonsoir Charles,
>
> En tous les cas, en Perl 6 sous Windows, ça marche direct, sans
> utilisation d'aucun pragma:
>
>
> my $test = "<toto>déjà</toto>" ;
>
> say ~$0 if $test ~~ m/ '<toto>' (.*?) '</toto>'/ ;
> say ~$0 if $test ~~ m/ '<toto>' \s*(.*)\s* '</toto>'/ ;
> say ~$0 if $test ~~ m/ '<toto>' \s*(.*)\s* '</toto>'/ ;
>
> Ce qui donne:
>
> C:\Users\Laurent>perl6 deja.pl6
> déjà
> déjà
> déjà
>
> (Et ça marche exactement pareil sous Debian).
>
> Cordialement,
> Laurent.
>
> Le 15 septembre 2016 à 17:43, minc <minc.charles at wanadoo.fr
> <mailto:minc.charles at wanadoo.fr>> a écrit :
>
> Il est écrit quelque part :
>
> |U+00A0 NO-BREAK SPACE (not matched by \s) mais : my
> $test=encode_utf8( decode_utf8 "<toto>déjà</toto>") ; my
> $reg1=qr{<toto>(.*?)</toto>} ; my
> $reg2=qr{<toto>\s*(.*)\s*</toto>} ; my
> $reg3=qr{<toto>\s*(.*?)\s*</toto>} ; $test=~m/$reg1/ ; say $1 ;
> $test=~m/$reg2/ ; say $1 ; $test=~m/$reg3/ ; say $1 ; qui donne :
> déjà déjà déjxC3 |
>
> [pour les sceptiques il peuvent essayer en remplaçant 'à' par 'ā'
> ( le a macron ;) ) ou une autre lettre] CQFD = bug Charles Charles
> Le 15/09/2016 à 14:30, minc a écrit :
>> Non , d'ailleurs le pragma use utf8 est ici , inutile puisque
>> que cette directive porte essentiellement sur le texte du
>> programme lui-même et je travaille avec des fichiers dont je
>> contrôle les entrées et les sorties. J'ai néanmoins testé et dans
>> mon cas les longueurs de mots deviennent erronées, sans pour
>> autant remédier à la question. J'utilise un perl 5.16.3, windows
>> 7 et les fichiers xml sources sont en UTF8. Merci. Merci Laurent
>> (ce n'est pas critique, j'ai mes résultats, mais cette exception
>> est curieuse, le même résultat est obtenu avec chop ! ). Le
>> 15/09/2016 à 13:27, Dominique Asselineau a écrit :
>>> Bonjour, Les 2 lignes suivantes sont-elles présentes dans les
>>> déclarations : use utf8; use feature 'unicode_strings';
>>> Dominique minc wrote on Thu, Sep 15, 2016 at 01:17:23PM +0200
>>>> Bonjour, J’extraie des mots d'un dictionnaire en xml avec la
>>>> regex suivante : my
>>>> $extract=qr{<orthography>\s*(?<word>.*?)\s*</orthography>} ;
>>>> les résultats sont correctes sauf pour les mots se terminant
>>>> par 'à' tel que "déjà" ou j'obtiens "déj\xC3" sachant que 'à'
>>>> en utf8 est la suite 'C3 A0'. Les autres caractères accentués
>>>> ne me semble pas poser de problème. Le résultat est corrigé
>>>> avec : my
>>>> $extract=qr{<orthography>(?<word>.*?)</orthography>} ; Quelle
>>>> hypothèse peut-on formuler pour expliquer cette "troncation" ?
>>>> Merci. Charles begin:vcard note;quoted-printable:Put your hand
>>>> on a hot stove for a minute, and it seems like an hour. Sit=
>>>> with a pretty girl for an hour, and it seems like a
>>>> minute. That's relat= ivity.=0D=0A= (A. Einstein)
>>>> version:2.1 end:vcard
>>>> _______________________________________________ Perl mailing
>>>> list Perl at mongueurs.net <mailto:Perl at mongueurs.net>
>>>> http://listes.mongueurs.net/mailman/listinfo/perl
>>>> <http://listes.mongueurs.net/mailman/listinfo/perl>
>>
>> _______________________________________________
>> Perl mailing list
>> Perl at mongueurs.net <mailto:Perl at mongueurs.net>
>> http://listes.mongueurs.net/mailman/listinfo/perl
>> <http://listes.mongueurs.net/mailman/listinfo/perl>
> _______________________________________________ Perl mailing list
> Perl at mongueurs.net <mailto:Perl at mongueurs.net>
> http://listes.mongueurs.net/mailman/listinfo/perl
> <http://listes.mongueurs.net/mailman/listinfo/perl>
>
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20160916/381c9b63/attachment.html>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: minc_charles.vcf
Type: text/x-vcard
Taille: 238 octets
Desc: non disponible
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20160916/381c9b63/attachment.vcf>
Plus d'informations sur la liste de diffusion Perl