[Perl] utf8 et lettre à

Laurent Rosenfeld laurent.rosenfeld at googlemail.com
Jeu 15 Sep 23:04:02 CEST 2016


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> 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
> http://listes.mongueurs.net/mailman/listinfo/perl
>
>
>
>
>
> _______________________________________________
> Perl mailing listPerl at mongueurs.nethttp://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/20160915/0ae47202/attachment.html>


Plus d'informations sur la liste de diffusion Perl