dans un terminal j'obtiens ceci:
--------
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52)
[GCC 4.4.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def F(x):
... return "[%s]" %(x.encode('utf8'))
...
>>> F(u"é")
'[\xc3\xa9]'
>>> print F(u"é")
[é]
-------
Et avec IDLE ou Pycrust j'obtiens pour la
même fonction et le même argument:
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52)
[GCC 4.4.4] on linux2
Type "copyright", "credits" or "license()" for more information.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente?
Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence?
Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer
à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
NicolasP
Le 13/07/2010 15:01, Laurent FRANCOIS a écrit :
je ne comprends pas pourquoi
dans un terminal j'obtiens ceci: -------- Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52) [GCC 4.4.4] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> def F(x): ... return "[%s]" %(x.encode('utf8')) ... >>> F(u"é") '[xc3xa9]' >>> print F(u"é") [é] ------- Et avec IDLE ou Pycrust j'obtiens pour la même fonction et le même argument:
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52) [GCC 4.4.4] on linux2 Type "copyright", "credits" or "license()" for more information.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Le 13/07/2010 15:01, Laurent FRANCOIS a écrit :
je ne comprends pas pourquoi
dans un terminal j'obtiens ceci:
--------
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52)
[GCC 4.4.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def F(x):
... return "[%s]" %(x.encode('utf8'))
...
>>> F(u"é")
'[xc3xa9]'
>>> print F(u"é")
[é]
-------
Et avec IDLE ou Pycrust j'obtiens pour la
même fonction et le même argument:
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52)
[GCC 4.4.4] on linux2
Type "copyright", "credits" or "license()" for more information.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente?
Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence?
Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer
à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
dans un terminal j'obtiens ceci: -------- Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52) [GCC 4.4.4] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> def F(x): ... return "[%s]" %(x.encode('utf8')) ... >>> F(u"é") '[xc3xa9]' >>> print F(u"é") [é] ------- Et avec IDLE ou Pycrust j'obtiens pour la même fonction et le même argument:
Python 2.6.5+ (release26-maint, Jun 16 2010, 09:20:52) [GCC 4.4.4] on linux2 Type "copyright", "credits" or "license()" for more information.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Laurent FRANCOIS
On 07/28/2010 11:38 PM, NicolasP wrote:
[snip] sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
-- Laurent FRANCOIS
On 07/28/2010 11:38 PM, NicolasP wrote:
[snip]
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente?
Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence?
Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer
à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à
ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
[snip] sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
-- Laurent FRANCOIS
NicolasP
Le 11/08/2010 13:43, Laurent FRANCOIS a écrit :
On 07/28/2010 11:38 PM, NicolasP wrote:
[snip] sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
J'ai bien lu.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
Le 11/08/2010 13:43, Laurent FRANCOIS a écrit :
On 07/28/2010 11:38 PM, NicolasP wrote:
[snip]
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente?
Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence?
Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer
à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à
ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
J'ai bien lu.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ?
Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
[snip] sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Pourquoi est-ce que la valeur retournée par F est si différente? Je comprends tres bien la différence dans le print.
Vous savez comment je peux me débarrasser de cette différence? Ne me dites pas de passer en 3 car je ne peux. Je voudrais continuer à utiliser wxpython qui n'est pas pret d'être en 3 si j'ai bien compris.
Merci
As tu vérifié que les encodages de la console et de IDLE correspondent à ce que donne sys.stdout.encoding ?
Nicolas
Oui bien sur je l'ai dans mon mail d'ailleurs.
J'ai bien lu.
sys.stdout.encoding et sys.stdin.encoding = UTF-8 dans tous les cas
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
Francois Lafont
Le 11/08/2010 14:09, NicolasP a écrit :
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ?
Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes
informations dans tous les cas ?
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
C'est possible que Python se trompe ?
Il n'y a pas de raison pour que Python se trompe mais rien n'est impossible.
D'ailleurs, la bonne écriture de la fonction serait plutôt celle-ci :
Là aussi, la bonne syntaxe est plutôt : print '%s' %u'é'.encode(sys.stdout.encoding)
Nicolas
Le 11/08/2010 21:59, Francois Lafont a écrit :
Le 11/08/2010 14:09, NicolasP a écrit :
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ?
Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes
informations dans tous les cas ?
C'est possible que Python se trompe ?
Il n'y a pas de raison pour que Python se trompe mais rien n'est impossible.
D'ailleurs, la bonne écriture de la fonction serait plutôt celle-ci :
Mais dans la réalité, est-ce que la console et IDLE utilisent bien utf-8 ? Est-ce que sys.stdout.encoding et sys.stdin.encoding donnent les bonnes informations dans tous les cas ?
C'est possible que Python se trompe ?
Il n'y a pas de raison pour que Python se trompe mais rien n'est impossible.
D'ailleurs, la bonne écriture de la fonction serait plutôt celle-ci :
------------------ D'ailleurs pour moi je suis pas un expert en python mais sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding)) et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
------- F(x) retourne une str. On est d'accord? Pourquoi elle est différente? Problème d'encodage. D'accord. Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Question: C'est quoi cet encodage: 'xc3x83xc2xa9' pour é? Du latin-1?
dans IDLE
def F(x):
return '%s' %(x.encode('latin-1'))
F(u"é")
'xc3xa9'
print F(u"é")
é
dans un terminal
def F(x):
... return '%s' %(x.encode('latin-1')) ...
F(u"é")
'xe9'
print F(u"é")
�
J'ai l'impression d'être près du but mais je n'arrive pas finir le travail.
Laurent FRANCOIS
On 08/12/2010 05:42 PM, NicolasP wrote:
D'ailleurs, la bonne écriture de la fonction serait plutôt celle-ci :
------------------
D'ailleurs pour moi je suis pas un expert en python mais
sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding))
et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
-------
F(x) retourne une str. On est d'accord?
Pourquoi elle est différente? Problème d'encodage. D'accord.
Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Question: C'est quoi cet encodage: 'xc3x83xc2xa9' pour é? Du latin-1?
dans IDLE
def F(x):
return '%s' %(x.encode('latin-1'))
F(u"é")
'xc3xa9'
print F(u"é")
é
dans un terminal
def F(x):
... return '%s' %(x.encode('latin-1'))
...
F(u"é")
'xe9'
print F(u"é")
�
J'ai l'impression d'être près du but mais je n'arrive pas
finir le travail.
------------------ D'ailleurs pour moi je suis pas un expert en python mais sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding)) et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
------- F(x) retourne une str. On est d'accord? Pourquoi elle est différente? Problème d'encodage. D'accord. Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Question: C'est quoi cet encodage: 'xc3x83xc2xa9' pour é? Du latin-1?
dans IDLE
def F(x):
return '%s' %(x.encode('latin-1'))
F(u"é")
'xc3xa9'
print F(u"é")
é
dans un terminal
def F(x):
... return '%s' %(x.encode('latin-1')) ...
F(u"é")
'xe9'
print F(u"é")
�
J'ai l'impression d'être près du but mais je n'arrive pas finir le travail.
------------------ D'ailleurs pour moi je suis pas un expert en python mais sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding)) et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
Dans ton post de départ, il est écrit : def F(x): return "[%s]" %(x.encode('utf8'))
Donc, tu codé en dur que l'encodage des chaines est de type utf8. Et si la console n'a pas cet encodage, l'affichage n'est pas bon.
Je t'explique donc qu'il vaut mieux écrire def F(x): return "[%s]" %(x.encode(sys.stdout.encoding))
De cette façon, l'encodage de tes chaines de caractères sera égal à celui de la console.
Au cas où je n'aurais pas été assez clair, c'est Python qui initialise sys.stdout.encoding, pas l'utilisateur. Si tu changes la valeur de sys.stdout.encoding, l'encodage utilisé par la console ne changera pas. Par exemple, sur ma machine qui tourne sous WinXp, dans la console IDLE, j'obtiens :
------- F(x) retourne une str. On est d'accord? Pourquoi elle est différente? Problème d'encodage. D'accord. Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Si tu es sous Windows, ça m'étonnerais que IDLE et un terminal utilisent le même encodage. Sur ma machine : IDLE : cp1252 terminal : cp850
Nicolas
Le 13/08/2010 14:31, Laurent FRANCOIS a écrit :
On 08/12/2010 05:42 PM, NicolasP wrote:
D'ailleurs, la bonne écriture de la fonction serait plutôt celle-ci :
------------------
D'ailleurs pour moi je suis pas un expert en python mais
sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding))
et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
Dans ton post de départ, il est écrit :
def F(x):
return "[%s]" %(x.encode('utf8'))
Donc, tu codé en dur que l'encodage des chaines est de type utf8.
Et si la console n'a pas cet encodage, l'affichage n'est pas bon.
Je t'explique donc qu'il vaut mieux écrire
def F(x):
return "[%s]" %(x.encode(sys.stdout.encoding))
De cette façon, l'encodage de tes chaines de caractères sera égal à celui de la console.
Au cas où je n'aurais pas été assez clair, c'est Python qui initialise sys.stdout.encoding, pas l'utilisateur. Si tu changes la valeur de sys.stdout.encoding, l'encodage utilisé par la console ne changera pas.
Par exemple, sur ma machine qui tourne sous WinXp, dans la console IDLE, j'obtiens :
-------
F(x) retourne une str. On est d'accord?
Pourquoi elle est différente? Problème d'encodage. D'accord.
Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Si tu es sous Windows, ça m'étonnerais que IDLE et un terminal utilisent le même encodage.
Sur ma machine :
IDLE : cp1252
terminal : cp850
------------------ D'ailleurs pour moi je suis pas un expert en python mais sys.stdout.encoding = A alors %(x.encode(sys.stdout.encoding)) et %(x.encode(A)) c'est bonnet blanc blanc bonnet.
Alors qu'est ce que tu veux nous faire comprendre NicolasP?
Dans ton post de départ, il est écrit : def F(x): return "[%s]" %(x.encode('utf8'))
Donc, tu codé en dur que l'encodage des chaines est de type utf8. Et si la console n'a pas cet encodage, l'affichage n'est pas bon.
Je t'explique donc qu'il vaut mieux écrire def F(x): return "[%s]" %(x.encode(sys.stdout.encoding))
De cette façon, l'encodage de tes chaines de caractères sera égal à celui de la console.
Au cas où je n'aurais pas été assez clair, c'est Python qui initialise sys.stdout.encoding, pas l'utilisateur. Si tu changes la valeur de sys.stdout.encoding, l'encodage utilisé par la console ne changera pas. Par exemple, sur ma machine qui tourne sous WinXp, dans la console IDLE, j'obtiens :
------- F(x) retourne une str. On est d'accord? Pourquoi elle est différente? Problème d'encodage. D'accord. Mais sys.stdout.encoding est le meme dans le terminal et dans IDLE.
Si tu es sous Windows, ça m'étonnerais que IDLE et un terminal utilisent le même encodage. Sur ma machine : IDLE : cp1252 terminal : cp850