Probleme d'accent avec Perl Tk et MAC

Le
Frantz DORSEMAINE
Bonjour à tous. J'ai un problème urgent à résoudre.

Voila ma configuration :

Mac OSX 10.6.5
Perl 5.8.9

Voila un script test :
#! /usr/bin/perl -w

use Encode::Unicode;
use Tk;


use strict;
use warnings;

my $wd=MainWindow->new(-width => 400, -height => 200
);


my $bt=$wd->Button(-text=>"éééé èèèèèè", -command => sub { &Hello
})->place(-x=> 10, -y=> 30);

MainLoop;

sub Hello {
print "Hello"
}

Les accents sur le bouton s'affiche x(8e) x(8f)

Voila je cherche depuis 2 jour et rien à faire, pas de solution. J'ai vu
sur un forum que l'on parlai éventuellement d'un problème avec X11,
voici ma version X11 :XQuartz 2.3.6 (xorg-server 1.4.2-apple56)

J'espère que quelqu'un a une solution
A+ Frantz
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #22859321
Le 28/11/2010 10:29, Frantz DORSEMAINE a écrit :
Bonjour à tous. J'ai un problème urgent à résoudre.

Voila ma configuration :

Mac OSX 10.6.5



C'est bien de le mettre, mais j'aurais pu le deviner tout seul,
cf. plus loin... Simplement, ça confirme.

Voila un script test :
#! /usr/bin/perl -w

use Encode::Unicode;



Ok.

[...]

my $bt=$wd->Button(-text=>"éééé èèèèèè", -command => sub { &Hello
})->place(-x=> 10, -y=> 30);

[...]

Les accents sur le bouton s'affiche x(8e) x(8f)



Le « é » est à la position 142 = x(8e) dans MacRoman, et le « è »
à la position 143 = x(8f) :

Je suppose donc que ton fichier source est en MacRoman, jeu de
caractères par défaut sur Mac, alors que tu déclares utiliser
Unicode (enfin... c'est ce que je comprends de la ligne qui dit
« use Encode::Unicode; » mais j'ai encore tout à apprendre en Perl).

Et j'imagine que les gourous de Perl ou de Macintosh sauront te dire
maintenant si tu dois changer le format du fichier ou bien une ligne de
code.

Cordialement,
--
Olivier Miakinen
Patrick Texier
Le #22859611
Le Mon, 29 Nov 2010 02:00:43 +0100, Olivier Miakinen a écrit :

> use Encode::Unicode;

Ok.



Il manque use utf8 et Encode ne sert à rien pour ce bout de code sans
conversion.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:twr
Patrick Texier
Le #22859971
Le Mon, 29 Nov 2010 08:42:32 +0100, Patrick Texier a écrit :

Il manque use utf8 et Encode ne sert à rien pour ce bout de code sans
conversion.



J'aimerais confirmation que use utf8 est la bonne méthode. La doc Perl
unicode est un bordel pas possible.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:twr
perlgenome
Le #22859961
Pour le développement d'application Tk avec accents, il faut utiliser
utf8 comme te l'as mentionné Patrick.

Voici un exemple de code :

#! /usr/bin/perl
use strict;
use warnings;

use utf8;
use Tk;

my $wd = MainWindow->new(
-width => 400,
-height => 200
);

my $bt = $wd->Button(
-text => "éééé èèèèèè",
-command => sub { &Hello; }
)->place( -x => 10, -y => 30 );

MainLoop;

sub Hello {
print "Hellon";
}

Attention : Ton code doit également être en utf8. L'utilisation
d'Encode est tout à fait inutile.
Frantz Dorsemaine
Le #22860271
On 29 nov, 10:11, perlgenome
Pour le développement d'application Tk avec accents, il faut utiliser
utf8 comme te l'as mentionné Patrick.

Voici un exemple de code :

#! /usr/bin/perl
use strict;
use warnings;

use utf8;
use Tk;

my $wd = MainWindow->new(
  -width  => 400,
  -height => 200
);

my $bt = $wd->Button(
  -text    => "éééé èèèèèè",
  -command => sub { &Hello; }
)->place( -x => 10, -y => 30 );

MainLoop;

sub Hello {
  print "Hellon";

}

Attention : Ton code doit également être en utf8. L'utilisation
d'Encode est tout à fait inutile.



Merci pour ta réponse mais il me semble avoir essayer comme ça et que
cela ne marchait pas. Je test ce soir sur mon MAC et je te donne le
résultat.
A+ Frantz
Frantz Dorsemaine
Le #22860351
On 29 nov, 10:11, perlgenome
Pour le développement d'application Tk avec accents, il faut utiliser
utf8 comme te l'as mentionné Patrick.




[
Attention : Ton code doit également être en utf8. L'utilisation
d'Encode est tout à fait inutile.
]

Qu'entant tu pas le code doit être en utf8?
Est ce que le simple fait de mettre use utf8; suffit à régler mon
problème?

Merci Frantz
Patrick Texier
Le #22860541
Le Mon, 29 Nov 2010 02:23:31 -0800 (PST), Frantz Dorsemaine a écrit :

Qu'entant tu pas le code doit être en utf8?
Est ce que le simple fait de mettre use utf8; suffit à régler mon
problème?



Il faut que le script soit bien en utf-8 aussi comme l'explique Olivier.

Sous Windows (Active Perl 5.8) j'en ai profité pour tester la police de
caractères en mettant du cyrillique dans le bouton.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:twr
Frantz Dorsemaine
Le #22860531
On 29 nov, 11:48, Patrick Texier
Le Mon, 29 Nov 2010 02:23:31 -0800 (PST), Frantz Dorsemaine a crit :

> Qu'entant tu pas le code doit tre en utf8?
> Est ce que le simple fait de mettre use utf8; suffit r gler mon
> probl me?

Il faut que le script soit bien en utf-8 aussi comme l'explique Olivier.

Sous Windows (Active Perl 5.8) j'en ai profit pour tester la police de
caract res en mettant du cyrillique dans le bouton.
--
 Patrick Texier

 vim:syntax=mail:ai:ts=4:et:twr



Autrement dit il faut que je créer une fonte et que je rajoute dans le
bouton :

my $ft=$wd ->fontecreate(etc.....);

my $bt = $wd->Button(-font => $ft
-text => "éééé èèèèèè",
-command => sub { &Hello; }
)->place( -x => 10, -y => 30 );
Nicolas George
Le #22861191
Frantz Dorsemaine , dans le message
écrit :
Autrement dit il faut que je créer une fonte et que je rajoute dans le
bouton :



Non, rien à voir. Ton programme est stocké dans un fichier. Un fichier est
une suite d'octets. Mais ton programme, tu y penses comme une suite de
caractères. Il faut que le codage qui fait correspondre cette suite d'octets
à cette suite de caractères soit UTF-8.
Olivier Miakinen
Le #22861721
Le 29/11/2010 11:23, Frantz Dorsemaine a écrit :

Qu'entends tu par le code doit être en utf8?



En gros, ça veut dire :

- ouvrir le fichier avec ton éditeur de texte favori
- enregistrer sous...
- nom de fichier = nom_du_script
- encodage = MacRoman ? /non/
ISO-8859-1 ? /non/
UTF-8 ? *oui*
- OK

Est ce que le simple fait de mettre use utf8; suffit à régler mon
problème?



Non. Voir aussi la réponse de Nicolas George.


P.-S. : C'est UTF-8 et pas utf8. Il faut y faire attention car cela
peut-être une source de bug (expérience vue il y a quelques semaines
dans les groupes de discussion).
Publicité
Poster une réponse
Anonyme