OVH Cloud OVH Cloud

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

4 réponses

1 2 3 4
Avatar
Paul Gaborit
À (at) Wed, 1 Dec 2010 05:40:22 -0800 (PST),
Frantz Dorsemaine écrivait (wrote):

On 1 déc, 11:17, Paul Gaborit wrote:
(at) Tue, 30 Nov 2010 09:42:06 -0800 (PST),

Dans le cas des changes avec MySQL, c'est via DBI et DBD::mysql (et la
base elle-m me) qu'on g re la question du codage. Il n'y a aucun lien
avec l'encodage du script lui-m me...




Sauf si je doit afficher du contenue de la base de donnée qui contient
des caractères accentués saisis par un opérateur dans un Winget Tk
????



Perl gère parfaitement les caractères Unicode. Ensuite vous avez trois
problèmes : comment gérer les échanges de textes entre Perl et...
1- Tk,
2- MySQL,
3- le contenu de votre script.

Ce sont trois problèmes différents.

Vous n'arrivez pas à gérer le troisième puisque vous n'arrivez pas à
gérer l'encodage de votre script. Je vous propose donc de stocker vos
messages dans un fichier externe puisqu'il est facile de gérer le codage
d'accès à un fichier.

Ensuite, il faudra régler les deux autres problèmes. Mais cela n'a pas
de lien avec le codage du source de votre script lui-même.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Paul Gaborit
À (at) Wed, 01 Dec 2010 21:29:38 +0100,
Frantz DORSEMAINE écrivait (wrote):

Voila la réponse :

my $test = "DORSEMAINE éèà";
my $octets = encode(utf8, $test, [ CHECK] ) ;

...

my $rqt=$Base->prepare("UPDATE tb_users SET
nom = '$string'
WHERE id = 3");




Merci à tous le monde pour votre aide qui m'a bien sortie de la me....



Je crois qu'en fait, vous n'en êtes pas sorti... et de loin. Si ma boule
de cristal fonctionne bien, la "solution" que vous préconisé consiste à
faire du double encodage...

Avez-vous créé votre base MySQL en lui disant que ses textes étaient
stockés en UTF-8 ? Avez-vous vérifié le contenu de votre base avec un
autre outil qu'un script Perl ? Avez-vous essayer récupéré du texte
venant de la base MySQL ? Avez-vous essayé tout cela avec des textes
contenant, par exemple, des caractères chinois ?

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Paul Gaborit
À (at) Thu, 02 Dec 2010 06:31:16 +0100,
Paul Gaborit écrivait (wrote):

Vous n'arrivez pas à gérer le troisième puisque vous n'arrivez pas à
gérer l'encodage de votre script. Je vous propose donc de stocker vos
messages dans un fichier externe puisqu'il est facile de gérer le codage
d'accès à un fichier.



Je vois en lisant vos autres messages que vous avez réussi à régler ce
problème (en réglant correctement Komodo). Parfait. Mais ma remarque
suivante tient encore...

Ensuite, il faudra régler les deux autres problèmes. Mais cela n'a pas
de lien avec le codage du source de votre script lui-même.



--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Paul Gaborit
À (at) Thu, 02 Dec 2010 06:40:21 +0100,
Paul Gaborit écrivait (wrote):


Je crois qu'en fait, vous n'en êtes pas sorti... et de loin. Si ma
boule de cristal fonctionne bien, la "solution" que vous préconisé


préconisez
consiste à faire du double encodage...

Avez-vous créé votre base MySQL en lui disant que ses textes étaient
stockés en UTF-8 ? Avez-vous vérifié le contenu de votre base avec un
autre outil qu'un script Perl ? Avez-vous essayer récupéré du texte


de récupérer
venant de la base MySQL ? Avez-vous essayé tout cela avec des textes
contenant, par exemple, des caractères chinois ?



Désolé pour cette orthographe peu orthodoxe... ;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
1 2 3 4