OVH Cloud OVH Cloud

Caracteres accentués

5 réponses
Avatar
Bibi69
Bonjour,
j'ai un fichier texte dans lequel il y a des ï.
Je voudrais les lister mais quand je fais =~/Ï/ ça ne me retourne rien
alors que si je fais Ctrl+f et "ï" dans le bloc-notes, il les trouve.
Quelqu'un sait comment on gère ça en Perl ?
Merci

5 réponses

Avatar
tfe
Bibi69 ha escrito:

Bonjour,
j'ai un fichier texte dans lequel il y a des ï.
Je voudrais les lister mais quand je fais =~/Ï/ ça ne me retourne r ien
alors que si je fais Ctrl+f et "ï" dans le bloc-notes, il les trouve.
Quelqu'un sait comment on gère ça en Perl ?
Merci


Bonjour,

Test par avance:
perl -e '$var ="ï"; if($var =~ /ï/) { print "OK"; } '

À prioris cela marche sans problèmes. Par contre, cela doit surement
problème du charset utilisé. ï et ï ne sont pas les meme
caractères si ils proviennent de l'utf ou d'un autre charset.
(corrigez moi si je me trompe).

Bonne soirée

--
tfe

Avatar
Paul Gaborit
À (at) Thu, 11 Jan 2007 22:10:19 +0100,
Bibi69 écrivait (wrote):
Bonjour,
j'ai un fichier texte dans lequel il y a des ï.
Je voudrais les lister mais quand je fais =~/Ï/ ça ne me retourne r ien
alors que si je fais Ctrl+f et "ï" dans le bloc-notes, il les trouve.
Quelqu'un sait comment on gère ça en Perl ?


Comme dans n'importe quel autre langage : 'A' n'est pas la même chose
que 'a'. Et donc 'ï' et 'Ï' sont différents.

PS: si, d'aventure, vous souhaitez un jour que le modificateur /i des
regexp fonctionne avec les caractéres accentués, il faut utiliser les
'locale'.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Bibi69
Test par avance:
perl -e '$var ="ï"; if($var =~ /ï/) { print "OK"; } '
Ca ne marche pas, réponse : "Can't find string terminator "'" anywhere

before EOF at -e line 1."

À prioris cela marche sans problèmes. Par contre, cela doit surement
problème du charset utilisé. ï et ï ne sont pas les meme
caractères si ils proviennent de l'utf ou d'un autre charset.
(corrigez moi si je me trompe).

Justement, c'est de l'utf-8. Qu'est-ce que je peux faire ?


Merci

Avatar
tfe
Bibi69 ha escrito:

Test par avance:
perl -e '$var ="ï"; if($var =~ /ï/) { print "OK"; } '
Ca ne marche pas, réponse : "Can't find string terminator "'" anywhere

before EOF at -e line 1."

À prioris cela marche sans problèmes. Par contre, cela doit surement
problème du charset utilisé. ï et ï ne sont pas les meme
caractères si ils proviennent de l'utf ou d'un autre charset.
(corrigez moi si je me trompe).

Justement, c'est de l'utf-8. Qu'est-ce que je peux faire ?


Merci


Pour la ligne en question, tu as juste du mal la recopier, je ne vois
pas d'autres explication.
Pour convertir une chaine de caractère de l'utf vers de l'iso par
exemple, tu peux toujours regarder du coté des modules cpan:
http://search.cpan.org
Je n'ai pas de nom à te donner de tête.

--
tfe
http://tfeserver.homelinux.com


Avatar
Nicolas George
"tfe" wrote in message
:
Pour convertir une chaine de caractère de l'utf vers de l'iso par
exemple, tu peux toujours regarder du coté des modules cpan:
http://search.cpan.org
Je n'ai pas de nom à te donner de tête.


Encode, qui fait partie de la distribution perl standard. Donc pas besoin du
CPAN.