Discussion:
Probleme d'accent avec Perl Tk et MAC
(trop ancien pour répondre)
Frantz DORSEMAINE
2010-11-28 09:29:19 UTC
Permalink
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
Olivier Miakinen
2010-11-29 01:00:43 UTC
Permalink
Post by Frantz DORSEMAINE
Bonjour à tous. J'ai un problème urgent à résoudre.
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.
Post by Frantz DORSEMAINE
#! /usr/bin/perl -w
use Encode::Unicode;
Ok.
Post by Frantz DORSEMAINE
[...]
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&pr=142>
<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=143>

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
2010-11-29 07:42:32 UTC
Permalink
Post by Frantz DORSEMAINE
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:tw=72
Patrick Texier
2010-11-29 09:03:13 UTC
Permalink
Post by Patrick Texier
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:tw=72
perlgenome
2010-11-29 09:11:46 UTC
Permalink
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 "Hello\n";
}

Attention : Ton code doit également être en utf8. L'utilisation
d'Encode est tout à fait inutile.
Frantz Dorsemaine
2010-11-29 10:18:02 UTC
Permalink
Post by perlgenome
Pour le développement d'application Tk avec accents, il faut utiliser
utf8 comme te l'as mentionné Patrick.
#! /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 "Hello\n";
}
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
2010-11-29 10:23:31 UTC
Permalink
Post by 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
2010-11-29 10:48:31 UTC
Permalink
Post by Frantz Dorsemaine
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:tw=72
Frantz Dorsemaine
2010-11-29 10:55:01 UTC
Permalink
Post by Patrick Texier
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:tw=72
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
2010-11-29 12:53:03 UTC
Permalink
Frantz Dorsemaine , dans le message
Post by Frantz Dorsemaine
Autrement dit il faut que je créer une fonte et que je rajoute dans le
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
2010-11-29 14:41:21 UTC
Permalink
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).
perlgenome
2010-11-29 16:07:55 UTC
Permalink
Sous ton éditeur de texte pspad, notepad++ ou autre, il y a
généralement un moyen de mettre ton programme en UTF-8.
Frantz DORSEMAINE
2010-11-29 17:03:28 UTC
Permalink
Post by perlgenome
Sous ton éditeur de texte pspad, notepad++ ou autre, il y a
généralement un moyen de mettre ton programme en UTF-8.
J'utilise Komodo sous MAC et en effet il y a une zone de paramètre
encodage que j'ai mis a utf8.

Voici le script

#! /usr/bin/perl -w

#use Encode::Unicode;

use utf8;
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"
}

Voici le debug :

FLAGS = (POK,pPOK,UTF8)
PV = 0x12ba600 "\216\216\216"\0Malformed UTF-8 character (unexpected
continuation byte 0x8e, with no preceding start byte) in subroutine
entry at /usr/local/ActivePerl-5.8/lib/Tk/Widget.pm line 205.
Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) in subroutine entry at
/usr/local/ActivePerl-5.8/lib/Tk/Widget.pm line 205.
Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) in subroutine entry at
/usr/local/ActivePerl-5.8/lib/Tk/Widget.pm line 205.
[UTF8 "\x{0}\x{0}\x{0}"]
CUR = 3
LEN = 4


Il y a du nouveau j'ai des point d'interrogation à la place des éééééé
Olivier Miakinen
2010-11-29 18:01:35 UTC
Permalink
Post by Frantz DORSEMAINE
J'utilise Komodo sous MAC et en effet il y a une zone de paramètre
encodage que j'ai mis a utf8.
C'est un menu déroulant, ou bien tu as saisi à la main la chaîne
« utf8 » ? Encore une fois, le nom officiel est « UTF-8 », et
même si la casse des caractères n'a en général pas d'importance,
l'absence du trait d'union pourrait en avoir (mais si Komodo ne
propose que « utf8 » et pas « UTF-8 » c'est juste qu'ils n'ont pas
fait gaffe eux-mêmes).
Post by Frantz DORSEMAINE
use utf8;
Ah, il n'y a pas de trait d'union ici, mais c'est sans doute dû à une
limitation des caractères autorisés pour un « use »... ;-)
Post by Frantz DORSEMAINE
[...] (unexpected continuation byte 0x8e, with no
preceding start byte) [...]
Tu as toujours un octet 0x8e, qui est la valeur du « é » dans MacRoman
et pas dans UTF-8 :
<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=142>

Pour le confirmer, mets ton script sur <http://www.cjoint.com/> et
donne-nous l'URL générée : on devrait pouvoir vérifier l'encodage,
et au besoin le transformer de MacRoman en UTF-8
Frantz DORSEMAINE
2010-11-29 22:03:50 UTC
Permalink
Post by Olivier Miakinen
Post by Frantz DORSEMAINE
J'utilise Komodo sous MAC et en effet il y a une zone de paramètre
encodage que j'ai mis a utf8.
C'est un menu déroulant, ou bien tu as saisi à la main la chaîne
« utf8 » ? Encore une fois, le nom officiel est « UTF-8 », et
même si la casse des caractères n'a en général pas d'importance,
l'absence du trait d'union pourrait en avoir (mais si Komodo ne
propose que « utf8 » et pas « UTF-8 » c'est juste qu'ils n'ont pas
fait gaffe eux-mêmes).
Post by Frantz DORSEMAINE
use utf8;
Ah, il n'y a pas de trait d'union ici, mais c'est sans doute dû à une
limitation des caractères autorisés pour un « use »... ;-)
Post by Frantz DORSEMAINE
[...] (unexpected continuation byte 0x8e, with no
preceding start byte) [...]
Tu as toujours un octet 0x8e, qui est la valeur du « é » dans MacRoman
<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=142>
Pour le confirmer, mets ton script sur<http://www.cjoint.com/> et
donne-nous l'URL générée : on devrait pouvoir vérifier l'encodage,
et au besoin le transformer de MacRoman en UTF-8
Désolé mais c'est bien un menu déroulant et c'est UTF-8 dans Komodo et
use utf8; dans le script.
J'ai essayé avec texedit et enregistrer sous en UTF-8 et c'est la même
chose.
Voici le lien généré http://cjoint.com/?0lDxbDyctqf
Merci à tous pour votre aide car j'ai vraiment besoin de me sortir de
là. Frantz
Olivier Miakinen
2010-11-29 22:56:28 UTC
Permalink
Post by Frantz DORSEMAINE
Désolé mais c'est bien un menu déroulant et c'est UTF-8 dans Komodo et
use utf8; dans le script.
Parfait.
Post by Frantz DORSEMAINE
J'ai essayé avec texedit et enregistrer sous en UTF-8 et c'est la même
chose.
Voici le lien généré http://cjoint.com/?0lDxbDyctqf
C'était toujours du MacRoman. Voici le même fichier en UTF-8 :

<http://cjoint.com/data/0lDx6IHumtZ_test.pl>.
--
Olivier Miakinen
Frantz DORSEMAINE
2010-11-30 06:47:35 UTC
Permalink
Post by Olivier Miakinen
Post by Frantz DORSEMAINE
Désolé mais c'est bien un menu déroulant et c'est UTF-8 dans Komodo et
use utf8; dans le script.
Parfait.
Post by Frantz DORSEMAINE
J'ai essayé avec texedit et enregistrer sous en UTF-8 et c'est la même
chose.
Voici le lien généré http://cjoint.com/?0lDxbDyctqf
<http://cjoint.com/data/0lDx6IHumtZ_test.pl>.
J'ai copier coller le contenu du lien mais j'obtiens cette fois des
petits rectangle verticaux à la place des éééé.

Mais c'est peux être pas ca qu'il faut faire?

Frantz
Olivier Miakinen
2010-11-30 07:53:04 UTC
Permalink
Post by Frantz DORSEMAINE
Post by Olivier Miakinen
<http://cjoint.com/data/0lDx6IHumtZ_test.pl>.
J'ai copier coller le contenu du lien mais j'obtiens cette fois des
petits rectangle verticaux à la place des éééé.
Mauvaise idée. ;-)
Post by Frantz DORSEMAINE
Mais c'est peux être pas ca qu'il faut faire?
Clic droit (ou pomme clic, ou je ne sais quel équivalent dans ton
navigateur) et « Enregistrer sous » ou « Save as ».

Méthode alternative : pars de <http://cjoint.com/data/0lDx6IHumtZ.htm>
et en cliquant droit (etc.) sur le lien « test.pl » choisis l'équivalent
de « Save link target as ».

Cordialement,
--
Olivier Miakinen
Frantz Dorsemaine
2010-11-30 16:10:06 UTC
Permalink
Post by Frantz DORSEMAINE
Post by Olivier Miakinen
<http://cjoint.com/data/0lDx6IHumtZ_test.pl>.
J'ai copier coller le contenu du lien mais j'obtiens cette fois des
petits rectangle verticaux la place des .
Mauvaise id e. ;-)
Post by Frantz DORSEMAINE
Mais c'est peux tre pas ca qu'il faut faire?
Clic droit (ou pomme clic, ou je ne sais quel quivalent dans ton
navigateur) et Enregistrer sous ou Save as .
M thode alternative : pars de <http://cjoint.com/data/0lDx6IHumtZ.htm>
et en cliquant droit (etc.) sur le lien test.pl choisis l' quivalent
de Save link target as .
Cordialement,
--
Olivier Miakinen
Pas mieux, je devient fou! Help!
Olivier Miakinen
2010-11-30 16:32:11 UTC
Permalink
Post by Frantz Dorsemaine
Pas mieux, je devient fou! Help!
Bon, on va essayer autre chose, puisque apparemment tu ne sais sauver
qu'en MacRoman. Reprends ton fichier de départ, en MacRoman donc, et
on va tenter de gruger l'éditeur de texte... ;-)

Tout d'abord, vérifie que tu retrouves bien le message d'erreur qui dit
« Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) ». C'est bon ?


Voyons <http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=142>.

Dans la partie droite, on lit :
MacRoman é U+00E9 &#233; &eacute; C3 A9

Le caractère é devrait être constitué des octets C3 et A9 (en UTF-8) au
lieu de l'octet 8E (qui est du MacRoman). Mais les octets C3 et A9,
comme d'ailleurs tous les octets de 80 à FF, correspondent tous à un
caractère dans MacRoman : C3 = √ et A9 = © !

Du coup, remplace tous les « é » par la séquence « √© », vérifie qu'il
n'existe aucun autre caractère accentué, et sauve le fichier en MacRoman.

Si je ne m'abuse, ton essai devrait être avec le code suivant :
=======================================================================
#! /usr/bin/perl -w

#use Encode::Unicode;

use utf8;
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"
}
=======================================================================

Si jamais ça marche, tu pourras essayer d'ajouter des « è » sous la
forme « √® » ou des « à » sous la forme « √† ».


Après ça, tu pourras aussi essayer de relire le fichier avec ton éditeur
pour voir s'il comprend enfin que c'est de l'UTF-8 -- ou bien chercher
un autre éditeur de texte plus performant !

Cordialement,
--
Olivier Miakinen
Frantz Dorsemaine
2010-11-30 17:42:06 UTC
Permalink
Post by Olivier Miakinen
Post by Frantz Dorsemaine
Pas mieux, je devient fou! Help!
Bon, on va essayer autre chose, puisque apparemment tu ne sais sauver
qu'en MacRoman. Reprends ton fichier de départ, en MacRoman donc, et
on va tenter de gruger l'éditeur de texte... ;-)
Tout d'abord, vérifie que tu retrouves bien le message d'erreur qui dit
« Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) ». C'est bon ?
Voyons <http://www.miakinen.net/vrac/charsets/?o6=MacRoman∨=6&pr=142>.
   MacRoman   é   U+00E9   &#233;   &eacute;   C3 A9
Le caractère é devrait être constitué des octets C3 et A9 (en UTF-8) au
lieu de l'octet 8E (qui est du MacRoman). Mais les octets C3 et A9,
comme d'ailleurs tous les octets de 80 à FF, correspondent tous à un
caractère dans MacRoman : C3 = √ et A9 = © !
Du coup, remplace tous les « é » par la séquence « √© », vérifie qu'il
n'existe aucun autre caractère accentué, et sauve le fichier en MacRoman.
=======================================================================
#! /usr/bin/perl -w
#use Encode::Unicode;
use utf8;
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"}
=======================================================================
Si jamais ça marche, tu pourras essayer d'ajouter des « è » sous la
forme « √® » ou des « à » sous la forme « √† ».
Après ça, tu pourras aussi essayer de relire le fichier avec ton éditeur
pour voir s'il comprend enfin que c'est de l'UTF-8 -- ou bien chercher
un autre éditeur de texte plus performant !
Cordialement,
--
Olivier Miakinen
Là tu marque 1 point ;), ca affiche bien des 'é' des 'è' et un 'à'
mais je me voie mal écrire des caractères pareil dans tous mes
scripts.
Il y à t-il un moyen d'y palier? De plus je vais avoir des échanges
avec une base de donnée MySql et là se sera ingérable.
On progresse! Merci
Nicolas George
2010-11-30 18:14:17 UTC
Permalink
Frantz Dorsemaine , dans le message
Post by Frantz Dorsemaine
Il y à t-il un moyen d'y palier?
Le problème est clairement au niveau de l'éditeur de texte utilisé :
consulter sa doc en profondeur ou en utiliser un autre sont les deux
solutions qui viennent à l'esprit.
Frantz Dorsemaine
2010-11-30 18:31:48 UTC
Permalink
Post by Nicolas George
Frantz Dorsemaine , dans le message
Il y t-il un moyen d'y palier?
consulter sa doc en profondeur ou en utiliser un autre sont les deux
solutions qui viennent l'esprit.
Voila du nouveau !

J'ai une VirtualBox sur ce meme MAC avec windows XP
J'installe les mêmes Perl Komodo PdkPro de chez active state.

Je prend le premier source qui ne marche pas sous MAC avec le use
Encode::Unicode :

#! /usr/bin/perl -w

use Encode::Unicode;

#use utf8;
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);

my $bt=$wd->Button(-text=>'éèà', -command => sub { &Hello

})->place(-x=> 10, -y=> 30);



#our $txt="?©?†?®";
our $txt="éèà";

my $En=$wd->Entry(-textvariable=>\$txt)->place(-x=> 100, -y=> 30);


Je le test et ca marche. Ensuite après l'avoir enregistrer, je prend
le test.pl que je colle sur mon mac et je test avec perl test.pl et ca
marche
Du coup j'ouvre le test.pl avec le Komodo du MAC et regarde la
différence de caractères spéciaux!

#! /usr/bin/perl -w

use Encode::Unicode;

#use utf8;
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);

my $bt=$wd->Button(-text=>'Èˇ', -command => sub { &Hello

})->place(-x=> 10, -y=> 30);



#our $txt="?©?Ü?Æ";
our $txt="Èˇ";

my $En=$wd->Entry(-textvariable=>\$txt)->place(-x=> 100, -y=> 30);


MainLoop;

sub Hello {
print "Hello\n"
}

Qu'en pense tu? Un gourou s' impose avec les grisgris???????

Frantz
Frantz Dorsemaine
2010-11-30 21:25:02 UTC
Permalink
Post by Nicolas George
Frantz Dorsemaine , dans le message
Il y t-il un moyen d'y palier?
consulter sa doc en profondeur ou en utiliser un autre sont les deux
solutions qui viennent l'esprit.
Je vais tester avec d'autre IDE Perl notamment Prade et je tien au
courant.
Download en cours.

A++
Olivier Miakinen
2010-11-30 22:30:06 UTC
Permalink
Post by Frantz Dorsemaine
[citation intégrale, y compris la signature]
Merci d'élaguer un peu, même quand tu réponds avec G2 (Google groupes)
au lieu de Thunderbird...
Post by Frantz Dorsemaine
Là tu marque 1 point ;), ca affiche bien des 'é' des 'è' et un 'à'
Ah, enfin ! Je commençais à désespérer... bon, ce n'est pas encore
aujourd'hui qu'un problème de charset me résistera. ;-)
Post by Frantz Dorsemaine
mais je me voie mal écrire des caractères pareil dans tous mes
scripts.
Il y à t-il un moyen d'y palier? De plus je vais avoir des échanges
avec une base de donnée MySql et là se sera ingérable.
Comme l'écrit Nicolas George : le problème se trouve visiblement dans
l'éditeur de texte et nulle part ailleurs.

Voir là :
http://www.google.fr/search?q=éditeur+de+texte+gérant+UTF-8+sur+Mac+OS+X
--
Olivier Miakinen
Xavier
2010-12-01 06:22:58 UTC
Permalink
Post by Frantz Dorsemaine
Là tu marque 1 point ;), ca affiche bien des 'é' des 'è' et un 'à'
mais je me voie mal écrire des caractères pareil dans tous mes
scripts.
Utilise TextWrangler <http://www.barebones.com/products/textwrangler/>
ou encore mieux, sa version payante, la Rolls des éditeurs de texte,
avec des fonctions d'IDE, BBEdit :
<http://www.barebones.com/products/bbedit/>
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Frantz DORSEMAINE
2010-12-01 07:50:27 UTC
Permalink
Post by Frantz Dorsemaine
Là tu marque 1 point ;), ca affiche bien des 'é' des 'è' et un 'à'
mais je me voie mal écrire des caractères pareil dans tous mes
scripts.
Utilise TextWrangler<http://www.barebones.com/products/textwrangler/>
ou encore mieux, sa version payante, la Rolls des éditeurs de texte,
<http://www.barebones.com/products/bbedit/>
Ça à l'air bien mais comment je peux changer le chemin de Perl par
défaut car je n'utilise pas le Prl 5.10 mais dur 5.8.9 situé sous
/usr/local/ActivePerl-5.8

Cordialement Frantz
Paul Gaborit
2010-12-01 10:17:38 UTC
Permalink
À (at) Tue, 30 Nov 2010 09:42:06 -0800 (PST),
Post by Frantz Dorsemaine
Là tu marque 1 point ;), ca affiche bien des 'é' des 'è' et un 'à'
mais je me voie mal écrire des caractères pareil dans tous mes
scripts.
Il y à t-il un moyen d'y palier?
Si vous n'arrivez pas à régler correctement l'encodage de votre script,
le meilleur moyen de s'en sortir consiste à :

1- Ne pas mettre la ligne 'use utf8;' (puisque votre script n'est pas
encodé en utf-8).

2- Ne pas mettre de message destiné à l'utilisateur directement hardcodé
dans le script (donc, n'utiliser que de l'ASCII dans votre script).

3- Créer un fichier de messages dans l'encodage qui vous
souhaitez/pouvez et le faire lire à votre script en déclarant l'encodage
utilisé lors de l'ouverture du fichier.
Post by Frantz Dorsemaine
De plus je vais avoir des échanges avec une base de donnée MySql et là
se sera ingérable. On progresse! Merci
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...
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Frantz Dorsemaine
2010-12-01 13:40:22 UTC
Permalink
Post by Paul Gaborit
(at) Tue, 30 Nov 2010 09:42:06 -0800 (PST),
L tu marque 1 point ;), ca affiche bien des ' ' des ' ' et un ' '
mais je me voie mal crire des caract res pareil dans tous mes
scripts.
Il y t-il un moyen d'y palier?
Si vous n'arrivez pas r gler correctement l'encodage de votre script,
1- Ne pas mettre la ligne 'use utf8;' (puisque votre script n'est pas
encod en utf-8).
2- Ne pas mettre de message destin l'utilisateur directement hardcod
dans le script (donc, n'utiliser que de l'ASCII dans votre script).
3- Cr er un fichier de messages dans l'encodage qui vous
souhaitez/pouvez et le faire lire votre script en d clarant l'encodage
utilis lors de l'ouverture du fichier.
De plus je vais avoir des changes avec une base de donn e MySql et l
se sera ing rable.  On progresse! Merci
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...
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en fran ais - <http://perl.mines-albi.fr/>
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
????
Frantz
Paul Gaborit
2010-12-02 05:31:16 UTC
Permalink
À (at) Wed, 1 Dec 2010 05:40:22 -0800 (PST),
Post by Frantz Dorsemaine
Post by Paul Gaborit
(at) Tue, 30 Nov 2010 09:42:06 -0800 (PST),
Post by Paul Gaborit
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/>
Paul Gaborit
2010-12-02 05:48:30 UTC
Permalink
À (at) Thu, 02 Dec 2010 06:31:16 +0100,
Post by Paul Gaborit
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...
Post by Paul Gaborit
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/>
Frantz DORSEMAINE
2010-12-01 20:18:49 UTC
Permalink
Post by Olivier Miakinen
Post by Frantz Dorsemaine
Pas mieux, je devient fou! Help!
Bon, on va essayer autre chose, puisque apparemment tu ne sais sauver
qu'en MacRoman. Reprends ton fichier de départ, en MacRoman donc, et
on va tenter de gruger l'éditeur de texte... ;-)
Tout d'abord, vérifie que tu retrouves bien le message d'erreur qui dit
« Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) ». C'est bon ?
Voyons<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=142>.
MacRoman é U+00E9&#233;&eacute; C3 A9
Le caractère é devrait être constitué des octets C3 et A9 (en UTF-8) au
lieu de l'octet 8E (qui est du MacRoman). Mais les octets C3 et A9,
comme d'ailleurs tous les octets de 80 à FF, correspondent tous à un
caractère dans MacRoman : C3 = √ et A9 = © !
Du coup, remplace tous les « é » par la séquence « √© », vérifie qu'il
n'existe aucun autre caractère accentué, et sauve le fichier en MacRoman.
=======================================================================
#! /usr/bin/perl -w
#use Encode::Unicode;
use utf8;
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"
}
=======================================================================
Si jamais ça marche, tu pourras essayer d'ajouter des « è » sous la
forme « √® » ou des « à » sous la forme « √† ».
Après ça, tu pourras aussi essayer de relire le fichier avec ton éditeur
pour voir s'il comprend enfin que c'est de l'UTF-8 -- ou bien chercher
un autre éditeur de texte plus performant !
Cordialement,
Salut Olivier, du nouveau, tu as bon sur toute la ligne. En cherchant
bien j'ai trouvé comment paramétré Komodo par défaut pour être en UTF-8
et comment réencoder les fichiers existants en UTF-8 et là ca marche.
Mais voici un problème de plus, se serai trop facile.
J'utilise DBI pour une base MySql en MAMP en utf8_unicode_ci
Voila le script perl qui fait un update sur une table en insérant les
caratères 'DORSEMAINE xx éèà'. Les caractères 'éèà' ne sont pas visibles
dans la base. D'où ca vient encore ses problèmes d'encodage?

le script :

! /usr/bin/perl -w

use utf8;

use Tk;
use DBI;



my $mw = MainWindow->new();

$mw->Label(-text => 'éèà')->place(-x=> 1, -y => 5);

my $BaseName ="atar";
my $host = "localhost";
$login="fdorsemaine";
$pass="europhi";
my $BaseType="DBI:mysqlPP:$BaseName:host=$host;port=3306";

our $Base=DBI->connect($BaseType,$login,$pass);

my $rqt=$Base->prepare("UPDATE tb_users SET
nom = 'DORSEMAINE xx éèà'
WHERE id = 3");
$rqt ->execute or die $DBI::errstr;

MainLoop;

Merci
Frantz DORSEMAINE
2010-12-01 20:29:38 UTC
Permalink
Post by Frantz DORSEMAINE
Post by Olivier Miakinen
Post by Frantz Dorsemaine
Pas mieux, je devient fou! Help!
Bon, on va essayer autre chose, puisque apparemment tu ne sais sauver
qu'en MacRoman. Reprends ton fichier de départ, en MacRoman donc, et
on va tenter de gruger l'éditeur de texte... ;-)
Tout d'abord, vérifie que tu retrouves bien le message d'erreur qui dit
« Malformed UTF-8 character (unexpected continuation byte 0x8e, with no
preceding start byte) ». C'est bon ?
Voyons<http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=142>.
MacRoman é U+00E9&#233;&eacute; C3 A9
Le caractère é devrait être constitué des octets C3 et A9 (en UTF-8) au
lieu de l'octet 8E (qui est du MacRoman). Mais les octets C3 et A9,
comme d'ailleurs tous les octets de 80 à FF, correspondent tous à un
caractère dans MacRoman : C3 = √ et A9 = © !
Du coup, remplace tous les « é » par la séquence « √© », vérifie qu'il
n'existe aucun autre caractère accentué, et sauve le fichier en MacRoman.
=======================================================================
#! /usr/bin/perl -w
#use Encode::Unicode;
use utf8;
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"
}
=======================================================================
Si jamais ça marche, tu pourras essayer d'ajouter des « è » sous la
forme « √® » ou des « à » sous la forme « √† ».
Après ça, tu pourras aussi essayer de relire le fichier avec ton éditeur
pour voir s'il comprend enfin que c'est de l'UTF-8 -- ou bien chercher
un autre éditeur de texte plus performant !
Cordialement,
Salut Olivier, du nouveau, tu as bon sur toute la ligne. En cherchant
bien j'ai trouvé comment paramétré Komodo par défaut pour être en UTF-8
et comment réencoder les fichiers existants en UTF-8 et là ca marche.
Mais voici un problème de plus, se serai trop facile.
J'utilise DBI pour une base MySql en MAMP en utf8_unicode_ci
Voila le script perl qui fait un update sur une table en insérant les
caratères 'DORSEMAINE xx éèà'. Les caractères 'éèà' ne sont pas visibles
dans la base. D'où ca vient encore ses problèmes d'encodage?
! /usr/bin/perl -w
use utf8;
use Tk;
use DBI;
my $mw = MainWindow->new();
$mw->Label(-text => 'éèà')->place(-x=> 1, -y => 5);
my $BaseName ="atar";
my $host = "localhost";
$login="fdorsemaine";
$pass="europhi";
my $BaseType="DBI:mysqlPP:$BaseName:host=$host;port=3306";
our $Base=DBI->connect($BaseType,$login,$pass);
my $rqt=$Base->prepare("UPDATE tb_users SET
nom = 'DORSEMAINE xx éèà'
WHERE id = 3");
$rqt ->execute or die $DBI::errstr;
MainLoop;
Merci
Voila la réponse :

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

...
Post by Frantz DORSEMAINE
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....

A bientôt Frantz.
Paul Gaborit
2010-12-02 05:40:21 UTC
Permalink
À (at) Wed, 01 Dec 2010 21:29:38 +0100,
Post by Frantz DORSEMAINE
my $test = "DORSEMAINE éèà";
my $octets = encode(utf8, $test, [ CHECK] ) ;
...
Post by Frantz DORSEMAINE
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/>
Paul Gaborit
2010-12-02 05:50:33 UTC
Permalink
À (at) Thu, 02 Dec 2010 06:40:21 +0100,
Post by Paul Gaborit
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
Post by Paul Gaborit
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
Post by Paul Gaborit
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/>
daniel750@live.ca
2013-06-24 01:22:02 UTC
Permalink
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.5C'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&pr=142> <http://www.miakinen.net/vrac/charsets/?o6=MacRoman&or=6&pr=143> 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
Bonjour

est ce que quelqu'un connais l'adresse email de olivier Miakinen. J'ai besoin de son aide pour un programme C
Merci
Olivier Miakinen
2013-06-24 06:08:03 UTC
Permalink
Bonjour,
Post by ***@live.ca
est ce que quelqu'un connais l'adresse email de olivier Miakinen.
Mon adresse est dans tous mes articles depuis toujours. D'ailleurs je
mets le suivi en privé pour que toute réponse soit redirigée par défaut
vers mon adresse de courriel.
Post by ***@live.ca
J'ai besoin de son aide pour un programme C
Si le programme n'est pas le mien, sache qu'il existe aussi un groupe
fr.comp.lang.c !

[suivi: poster]

Cordialement,
--
Olivier Miakinen
Loading...