[Perl] utf8 et lettre à

minc minc.charles at wanadoo.fr
Ven 16 Sep 22:57:03 CEST 2016


Bonsoir Laurent,

On en déduit que les concepteurs de Perl 6 ont du faire du bon boulot

et ne se sont pas contentés de récupérer du Perl5 ;-).

Si certains Mongueurs s'en sentent le courage ils seraient , peut- être,

intéressant de voir comment réagissent les autres langages comme python,

java et co, PHP. Cela pourrait devenir un petit argument pour Perl6, si

le bug était présent ailleurs.

Je propose à cette fin le test ( en Perl5 et en UTF8)  : say 
qq{à}=~/(\S*)/ ;

à adapter pour les autres langages qui doit donc renvoyer 'à' dans les 
bons cas.

Cordialement.

Ch. Minc



Le 16/09/2016 à 21:07, Laurent Rosenfeld a écrit :
> Bonsoir Charles,
>
> il y a un problème dans ta regex:
>
> /<toto>(*?)\s*</toto>/
>         ÎÎ
> car le quantificateur *? ne quantifie rien. Si je suppose que tous 
> voulais écrire:
> /<toto>(.*?)\s*</toto>/
> alors, je confirme que ça fonctionne aussi en Perl 6:
>
> my $test = "<toto>déjà</toto>";
> say ~$0 if $test ~~ m/ '<toto>' (.*?)\s* '</toto>'/;
>
> Ce qui affiche bien "déjà", comme les précédentes tentatives.
>
> Bonne soirée,
> Laurent.
>
>
>
>
> Le 16 septembre 2016 à 16:33, minc <minc.charles at wanadoo.fr 
> <mailto:minc.charles at wanadoo.fr>> a écrit :
>
>     Sorry fausse bonne nouvelle c'était le "a macron" et non 'à' :-[ .
>
>     Le 16/09/2016 16:29, minc a écrit :
>>     The last but not the less ;-)
>>     Le test avec un Strawberry perl 5.24.0 est correct !
>>
>>     @++.
>>
>>     Charles
>>
>>     Le 16/09/2016 10:37, minc a écrit :
>>>     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
>>>     <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 <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 <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/d9877fb8/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/d9877fb8/attachment.vcf>


Plus d'informations sur la liste de diffusion Perl