Bonjour,
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP.
Lorsque je lance un ordre print avec une chaîne comportant des lettres
accentuées, celles ci sont remplacées à l'écran par des caractères
différents.
Connaissez vous la raison? y a t il une solution simple?
Si je remplace le caractère accentué par une barre oblique inverse \ suivie
du numéro de caractère dans le codage PC, en octal, l'affichage redevient
correct, mais ce n'est pas très pratique.
J'utilise perl en ligne de commande à partir du DOS, et non à partir de
Windows. Est ce que le codage est différent avec DOS et avec Windows, ce que
je viens de lire, et qui pourrait expliquer le problème?
À (at) Thu, 18 Nov 2004 13:27:05 +0100, "Jacques Noël" écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP. Lorsque je lance un ordre print avec une chaîne comportant des lettres accentuées, celles ci sont remplacées à l'écran par des caractères différents. Est ce que le codage est différent avec DOS et avec Windows, ce que je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 13:27:05 +0100,
"Jacques Noël" <j.r.noel@wanadoo.fr> écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP.
Lorsque je lance un ordre print avec une chaîne comportant des lettres
accentuées, celles ci sont remplacées à l'écran par des caractères
différents.
Est ce que le codage est différent avec DOS et avec Windows, ce que
je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 13:27:05 +0100, "Jacques Noël" écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP. Lorsque je lance un ordre print avec une chaîne comportant des lettres accentuées, celles ci sont remplacées à l'écran par des caractères différents. Est ce que le codage est différent avec DOS et avec Windows, ce que je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Jacques Noël
"Paul Gaborit" a écrit dans le message de news:
À (at) Thu, 18 Nov 2004 13:27:05 +0100, "Jacques Noël" écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP. Lorsque je lance un ordre print avec une chaîne comportant des lettres accentuées, celles ci sont remplacées à l'écran par des caractères différents. Est ce que le codage est différent avec DOS et avec Windows, ce que je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Jacques Noël
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r7sm77e3ew.fsf@pasteur.enstimac.fr...
À (at) Thu, 18 Nov 2004 13:27:05 +0100,
"Jacques Noël" <j.r.noel@wanadoo.fr> écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP.
Lorsque je lance un ordre print avec une chaîne comportant des lettres
accentuées, celles ci sont remplacées à l'écran par des caractères
différents.
Est ce que le codage est différent avec DOS et avec Windows, ce que
je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une
solution :autre que de ne plus utiliser d'accents?
À (at) Thu, 18 Nov 2004 13:27:05 +0100, "Jacques Noël" écrivait (wrote):
Je fais mes premiers pas avec ActivePerl , sur PC avec Windows XP. Lorsque je lance un ordre print avec une chaîne comportant des lettres accentuées, celles ci sont remplacées à l'écran par des caractères différents. Est ce que le codage est différent avec DOS et avec Windows, ce que je viens de lire, et qui pourrait expliquer le problème?
C'est exactement cela.
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Jacques Noël
Paul Gaborit
À (at) Thu, 18 Nov 2004 14:15:40 +0100, "Jacques Noël" écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense que la réouverture de STDOUT en utilisant la couche de réencodage "<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 14:15:40 +0100,
"Jacques Noël" <j.r.noel@wanadoo.fr> écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une
solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense que
la réouverture de STDOUT en utilisant la couche de réencodage
"<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 14:15:40 +0100, "Jacques Noël" écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense que la réouverture de STDOUT en utilisant la couche de réencodage "<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Damien GUERIN
En fait, il faut enregistrer le fichier utf-8.
"Paul Gaborit" a écrit dans le message de news:
À (at) Thu, 18 Nov 2004 14:15:40 +0100, "Jacques Noël" écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense que la réouverture de STDOUT en utilisant la couche de réencodage "<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
En fait, il faut enregistrer le fichier utf-8.
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r7oehve0gp.fsf@pasteur.enstimac.fr...
À (at) Thu, 18 Nov 2004 14:15:40 +0100,
"Jacques Noël" <j.r.noel@wanadoo.fr> écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une
solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense
que
la réouverture de STDOUT en utilisant la couche de réencodage
"<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 14:15:40 +0100, "Jacques Noël" écrivait (wrote):
Merci de me confirmer que je suis sur la bonne voie, mais y a-t-il une solution :autre que de ne plus utiliser d'accents?
Si vous y tenez vraiment, lisez alors la doc de Encode::PerlIO. Je pense que la réouverture de STDOUT en utilisant la couche de réencodage "<:encoding(cp1252)" doit pouvoir vous dépanner (je n'ai jamais testé).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Paul Gaborit
À (at) Thu, 18 Nov 2004 18:09:46 +0100, "Damien GUERIN" écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 18:09:46 +0100,
"Damien GUERIN" <damien.guerin2@wanadoo.fr> écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 18:09:46 +0100, "Damien GUERIN" écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Jacques Noël
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de l'éditeurde texte. Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour l'enregistrement des fichiers texte et cela conduit au problème déjà cité. Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse. Je ferai des essais plus systématiques demain. Je vous remercie de vos réponses, qui m'ont apparemment permis de trouver une solution. Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui travaille dans d'autres conditions, il aura des lettres mal affichées?
Jacques Noël
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de
l'éditeurde texte.
Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour
l'enregistrement des fichiers texte et cela conduit au problème déjà cité.
Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et
RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Je ferai des essais plus systématiques demain.
Je vous remercie de vos réponses, qui m'ont apparemment permis de trouver
une solution.
Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui
travaille dans d'autres conditions, il aura des lettres mal affichées?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de l'éditeurde texte. Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour l'enregistrement des fichiers texte et cela conduit au problème déjà cité. Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse. Je ferai des essais plus systématiques demain. Je vous remercie de vos réponses, qui m'ont apparemment permis de trouver une solution. Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui travaille dans d'autres conditions, il aura des lettres mal affichées?
Jacques Noël
Patrick Texier
Le Thu, 18 Nov 2004 22:32:25 +0100, "Jacques Noël" a écrit :
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur : si le programme fait des tests sur des caractères accentués ISO, cela ne va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués, il suffit de la rediriger dans un fichier. -- Patrick Texier
Le Thu, 18 Nov 2004 22:32:25 +0100, "Jacques Noël" <j.r.noel@wanadoo.fr>
a écrit :
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur :
si le programme fait des tests sur des caractères accentués ISO, cela ne
va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués,
il suffit de la rediriger dans un fichier.
--
Patrick Texier
Le Thu, 18 Nov 2004 22:32:25 +0100, "Jacques Noël" a écrit :
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur : si le programme fait des tests sur des caractères accentués ISO, cela ne va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués, il suffit de la rediriger dans un fichier. -- Patrick Texier
Jacques Noël
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur : si le programme fait des tests sur des caractères accentués ISO, cela ne va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués, il suffit de la rediriger dans un fichier.
Merci de ces informations complémentaires. Je ne suis pas sûr d'avoir tout compris, ces problèmes d'encodage et leurs conséquences aux différentes étapes du traitement me dépassant un peu. En cherchant sur Google avec "cp850 cp1252", j'ai trouvé la page ci dessous, assez explicite, qui montre que je ne suis pas le seul à avoir rencontré le problème, et qui propose des méthodes d'encodage pour différents cas. Elle est orientée vers Python et non Perl, mais on doit pouvoir transposer. http://pythonfacile.free.fr/python/unicode.html
Je comprends de ce que vous dites que même si l'affichage à l'écran perturbe les lettres accentuées, la situation serait normale en écrivant dans un fichier et en le relisant ensuite.
Encore merci à tous, je vais poursuivre mon effort. Jacques Noël
En prenant l'option "texte MS DOS", il semble que le problème
disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur :
si le programme fait des tests sur des caractères accentués ISO, cela ne
va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués,
il suffit de la rediriger dans un fichier.
Merci de ces informations complémentaires. Je ne suis pas sûr d'avoir tout
compris, ces problèmes d'encodage et leurs conséquences aux différentes
étapes du traitement me dépassant un peu.
En cherchant sur Google avec "cp850 cp1252", j'ai trouvé la page ci
dessous, assez explicite, qui montre que je ne suis pas le seul à avoir
rencontré le problème, et qui propose des méthodes d'encodage pour
différents cas. Elle est orientée vers Python et non Perl, mais on doit
pouvoir transposer.
http://pythonfacile.free.fr/python/unicode.html
Je comprends de ce que vous dites que même si l'affichage à l'écran perturbe
les lettres accentuées, la situation serait normale en écrivant dans un
fichier et en le relisant ensuite.
Encore merci à tous, je vais poursuivre mon effort.
Jacques Noël
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Oui, il faudrait utiliser cp850 pour l'affichage.
C'est un peu dangereux de jouer avec le jeu de caractères de l'éditeur : si le programme fait des tests sur des caractères accentués ISO, cela ne va plus fonctionner.
Si on veut vraiment récupérer la sortie avec les caractères accentués, il suffit de la rediriger dans un fichier.
Merci de ces informations complémentaires. Je ne suis pas sûr d'avoir tout compris, ces problèmes d'encodage et leurs conséquences aux différentes étapes du traitement me dépassant un peu. En cherchant sur Google avec "cp850 cp1252", j'ai trouvé la page ci dessous, assez explicite, qui montre que je ne suis pas le seul à avoir rencontré le problème, et qui propose des méthodes d'encodage pour différents cas. Elle est orientée vers Python et non Perl, mais on doit pouvoir transposer. http://pythonfacile.free.fr/python/unicode.html
Je comprends de ce que vous dites que même si l'affichage à l'écran perturbe les lettres accentuées, la situation serait normale en écrivant dans un fichier et en le relisant ensuite.
Encore merci à tous, je vais poursuivre mon effort. Jacques Noël
Paul Gaborit
À (at) Thu, 18 Nov 2004 22:32:25 +0100, "Jacques Noël" écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de l'éditeurde texte. Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour l'enregistrement des fichiers texte et cela conduit au problème déjà cité. Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse. Je ferai des essais plus systématiques demain.
C'est la solution du "pauvre" : encodé le script avec le codage de la plate-forme de destination (DOS dans votre cas).
Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui travaille dans d'autres conditions, il aura des lettres mal affichées?
C'est certain !.
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec son interpréteur de commandes ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous permettrait de vous affranchir de ce problème et d'utiliser le codage iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour tous vos affichages.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 22:32:25 +0100,
"Jacques Noël" <j.r.noel@wanadoo.fr> écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de
l'éditeurde texte.
Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour
l'enregistrement des fichiers texte et cela conduit au problème déjà cité.
Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et
RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse.
Je ferai des essais plus systématiques demain.
C'est la solution du "pauvre" : encodé le script avec le codage de la
plate-forme de destination (DOS dans votre cas).
Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui
travaille dans d'autres conditions, il aura des lettres mal affichées?
C'est certain !.
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec son
interpréteur de commandes ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous
permettrait de vous affranchir de ce problème et d'utiliser le codage
iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour tous
vos affichages.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 18 Nov 2004 22:32:25 +0100, "Jacques Noël" écrivait (wrote):
En fait, il faut enregistrer le fichier utf-8.
Heu... ?
Après tâtonnements, je crois avoir trouvé une solution, mais elle dépend de l'éditeurde texte. Avec le bloc notes (Notepad) de Windows, il n'y a qu'un choix pour l'enregistrement des fichiers texte et cela conduit au problème déjà cité. Avec Wordpad, il y a plus de choix : texte, texte MSDOS, texte Unicode et RTF.
En prenant l'option "texte MS DOS", il semble que le problème disparaisse. Je ferai des essais plus systématiques demain.
C'est la solution du "pauvre" : encodé le script avec le codage de la plate-forme de destination (DOS dans votre cas).
Mais je suppose que si je transmets mon fichier texte MS DOS à quelqu'un qui travaille dans d'autres conditions, il aura des lettres mal affichées?
C'est certain !.
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec son interpréteur de commandes ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous permettrait de vous affranchir de ce problème et d'utiliser le codage iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour tous vos affichages.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Jacques Noël
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec son interpréteur de commandes ?
Je ne suis pas sûr de bien comprendre la question : je lance mon PC sous Windows XP, puis je lance "invite de commandes", je me retrouve dans une fenêtre noire où il faut parler DOS pour changer de répertoire et ouvrir les fichiers. C'est probablement votre deuxième cas ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous permettrait de vous affranchir de ce problème et d'utiliser le codage iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour tous vos affichages. Je suis prêt à essayer : où trouve-t-on ce bout de code ? Faut il l'intégrer
dans les fichiers contenant les programmes ?
Jacques Noël
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec
son
interpréteur de commandes ?
Je ne suis pas sûr de bien comprendre la question : je lance mon PC sous
Windows XP, puis je lance "invite de commandes", je me retrouve dans une
fenêtre noire où il faut parler DOS pour changer de répertoire et ouvrir les
fichiers.
C'est probablement votre deuxième cas ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous
permettrait de vous affranchir de ce problème et d'utiliser le codage
iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour
tous
vos affichages.
Je suis prêt à essayer : où trouve-t-on ce bout de code ? Faut il l'intégrer
Mais, au fait, travaillez-vous vraiment sous DOS ? Ou sous Windows avec son interpréteur de commandes ?
Je ne suis pas sûr de bien comprendre la question : je lance mon PC sous Windows XP, puis je lance "invite de commandes", je me retrouve dans une fenêtre noire où il faut parler DOS pour changer de répertoire et ouvrir les fichiers. C'est probablement votre deuxième cas ?
Dans le second cas, l'utilisation d'un tout petit bout de Perl/Tk vous permettrait de vous affranchir de ce problème et d'utiliser le codage iso-latin-1 (qui est très proche du codage Windows) voire même utf-8 pour tous vos affichages. Je suis prêt à essayer : où trouve-t-on ce bout de code ? Faut il l'intégrer