[Perl] utf8 et lettre à

minc minc.charles at wanadoo.fr
Ven 16 Sep 16:33:06 CEST 2016


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).
>>
>> 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
>>
>> _______________________________________________
>> Perl mailing list
>> Perl at mongueurs.net
>> 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/455047c7/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/455047c7/attachment.vcf>


Plus d'informations sur la liste de diffusion Perl