Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme d'accent avec Perl Tk et MAC

34 réponses
Avatar
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\n"
}

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

10 réponses

1 2 3 4
Avatar
Olivier Miakinen
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) :
<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr2>
<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr3>

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
Avatar
Patrick Texier
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
Avatar
Patrick Texier
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
Avatar
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.
Avatar
Frantz Dorsemaine
On 29 nov, 10:11, perlgenome wrote:
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
Avatar
Frantz Dorsemaine
On 29 nov, 10:11, perlgenome wrote:
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
Avatar
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
Avatar
Frantz Dorsemaine
On 29 nov, 11:48, Patrick Texier wrote:
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 );
Avatar
Nicolas George
Frantz Dorsemaine , dans le message
, a
é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.
Avatar
Olivier Miakinen
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).
1 2 3 4