PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Problème d'affichage de caractères dans la console python
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Problème d'affichage de caractères dans la console python

Réponse
 
LinkBack Outils de la discussion
Vieux 06/10/2007, 10h22   #1
david.hautbois@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Problème d'affichage de caractères dans la console python

Salut
J'ai des soucis lors de l'affichage de chaines de caractères dans la
console.
Sur ma debian :
>>> print u'Internet radio devices \u2014 what a good/bad idea'

Internet radio devices - what a good/bad idea

Ok, pas de problème.

Maintenant, on complique :
J'utilise l'environnement de développement de la tablette Nokia N800.

>>> print u'Internet radio devices \u2014 what a good/bad idea'

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
position 23: ordinal not in range(128)

On m'a conseillé le commandes suivantes :
unset LC_ALL
export LC_ALL="en_US.UTF-8"
export LC_ALL="fr_FR.UTF-8"

Rien n'y fait... toujours la même erreur.

Avez vous une idée ?

Merci.

David.

  Réponse avec citation
Vieux 06/10/2007, 16h14   #2
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

david.hautbois@gmail.com a écrit :
>>>> print u'Internet radio devices \u2014 what a good/bad idea'

> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> position 23: ordinal not in range(128)
>
> Rien n'y fait... toujours la même erreur.
>
> Avez vous une idée ?


Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
python ?

Bon weekend

Julien.
  Réponse avec citation
Vieux 06/10/2007, 16h14   #3
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

david.hautbois@gmail.com a écrit :
>>>> print u'Internet radio devices \u2014 what a good/bad idea'

> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> position 23: ordinal not in range(128)
>
> Rien n'y fait... toujours la même erreur.
>
> Avez vous une idée ?


Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
python ?

Bon weekend

Julien.
  Réponse avec citation
Vieux 07/10/2007, 19h20   #4
david.hautbois@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
> david.hautb...@gmail.com a écrit :
>
> >>>> print u'Internet radio devices \u2014 what a good/bad idea'

> > Traceback (most recent call last):
> > File "<stdin>", line 1, in <module>
> > UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> > position 23: ordinal not in range(128)

>
> > Rien n'y fait... toujours la même erreur.

>
> > Avez vous une idée ?

>
> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> python ?
>
> Bon weekend
>
> Julien.


Je ne vois nul part l'encodage par défaut

  Réponse avec citation
Vieux 07/10/2007, 19h20   #5
david.hautbois@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
> david.hautb...@gmail.com a écrit :
>
> >>>> print u'Internet radio devices \u2014 what a good/bad idea'

> > Traceback (most recent call last):
> > File "<stdin>", line 1, in <module>
> > UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> > position 23: ordinal not in range(128)

>
> > Rien n'y fait... toujours la même erreur.

>
> > Avez vous une idée ?

>
> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> python ?
>
> Bon weekend
>
> Julien.


Je ne vois nul part l'encodage par défaut

  Réponse avec citation
Vieux 07/10/2007, 21h20   #6
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

Bonsoir,
> J'utilise l'environnement de développement de la tablette Nokia N800.
>
>>>> print u'Internet radio devices \u2014 what a good/bad idea'

> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> position 23: ordinal not in range(128)
>

As-tu essayé :
print u'Int...ices \u2014 what...idea'.encode('ascii','ignore')
ou print u'Int...ices \u2014 what...idea'.encode('ascii','replace')
qui va ignorer (ou remplacer par ? suivant le cas) l'affichage des
caractères non gérés ?

Au besoin, un ptit coup d'oeil sur
http://wikipython.flibuste.net/moin.py/JouerAvecUnicode pourrait être
salutaire...

A+
jm
  Réponse avec citation
Vieux 07/10/2007, 21h20   #7
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

Bonsoir,
> J'utilise l'environnement de développement de la tablette Nokia N800.
>
>>>> print u'Internet radio devices \u2014 what a good/bad idea'

> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> position 23: ordinal not in range(128)
>

As-tu essayé :
print u'Int...ices \u2014 what...idea'.encode('ascii','ignore')
ou print u'Int...ices \u2014 what...idea'.encode('ascii','replace')
qui va ignorer (ou remplacer par ? suivant le cas) l'affichage des
caractères non gérés ?

Au besoin, un ptit coup d'oeil sur
http://wikipython.flibuste.net/moin.py/JouerAvecUnicode pourrait être
salutaire...

A+
jm
  Réponse avec citation
Vieux 08/10/2007, 08h22   #8
NicolasP
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

jean-michel bain-cornu a écrit :
> ou print u'Int...ices \u2014 what...idea'.encode('ascii','replace')


ou mieux : print u'Int...ices \u2014 what...idea'.encode('encodage','replace')

avec encodage = l'encodage de la console.

Tous les caractères sont conservés.

J'ai le même problème sous windows avec certains scripts qui affichent des chaines unicode qui viennent "d'ailleurs".
Quand le script est exécuté dans une boite DOS, ca marche mais quand c'est exécuté dans un environement IDLE, j'ai le une exception due à l'encodage si je ne change pas l'encodage de la chaine lors de l'affichage.
Une boite DOS a un encodage différent d'une fenêtre Windows (d'où le comportement différent).
Il faut juste connaitre l'encodage du flux de sortie pour faire la conversion.


Nicolas
  Réponse avec citation
Vieux 08/10/2007, 08h22   #9
NicolasP
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

jean-michel bain-cornu a écrit :
> ou print u'Int...ices \u2014 what...idea'.encode('ascii','replace')


ou mieux : print u'Int...ices \u2014 what...idea'.encode('encodage','replace')

avec encodage = l'encodage de la console.

Tous les caractères sont conservés.

J'ai le même problème sous windows avec certains scripts qui affichent des chaines unicode qui viennent "d'ailleurs".
Quand le script est exécuté dans une boite DOS, ca marche mais quand c'est exécuté dans un environement IDLE, j'ai le une exception due à l'encodage si je ne change pas l'encodage de la chaine lors de l'affichage.
Une boite DOS a un encodage différent d'une fenêtre Windows (d'où le comportement différent).
Il faut juste connaitre l'encodage du flux de sortie pour faire la conversion.


Nicolas
  Réponse avec citation
Vieux 08/10/2007, 08h31   #10
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

> Il faut juste connaitre l'encodage du flux de sortie pour faire la
> conversion.

....et si tu ne le connais pas, ('ascii','replace') passera à tous les
coups...
  Réponse avec citation
Vieux 08/10/2007, 08h31   #11
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

> Il faut juste connaitre l'encodage du flux de sortie pour faire la
> conversion.

....et si tu ne le connais pas, ('ascii','replace') passera à tous les
coups...
  Réponse avec citation
Vieux 08/10/2007, 08h53   #12
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

>> Il faut juste connaitre l'encodage du flux de sortie pour faire la
>> conversion.

> ...et si tu ne le connais pas, ('ascii','replace') passera à tous les
> coups...

Je l'ai sous la main :
import locale
print locale.getdefaultlocale()[1]
permet de connaître le charset courant.
  Réponse avec citation
Vieux 08/10/2007, 08h53   #13
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

>> Il faut juste connaitre l'encodage du flux de sortie pour faire la
>> conversion.

> ...et si tu ne le connais pas, ('ascii','replace') passera à tous les
> coups...

Je l'ai sous la main :
import locale
print locale.getdefaultlocale()[1]
permet de connaître le charset courant.
  Réponse avec citation
Vieux 08/10/2007, 10h22   #14
NicolasP
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

jean-michel bain-cornu a écrit :
>>> Il faut juste connaitre l'encodage du flux de sortie pour faire la
>>> conversion.

>> ...et si tu ne le connais pas, ('ascii','replace') passera à tous les
>> coups...

> Je l'ai sous la main :
> import locale
> print locale.getdefaultlocale()[1]
> permet de connaître le charset courant.


Tiens, j'ai le même résultat (CP1252) dans une boite DOS que dans une fenêtre Windows.
Aurais-je dis une bêtise ?
Il faut que je vérifie (mais c'est à la maison).
  Réponse avec citation
Vieux 08/10/2007, 10h22   #15
NicolasP
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

jean-michel bain-cornu a écrit :
>>> Il faut juste connaitre l'encodage du flux de sortie pour faire la
>>> conversion.

>> ...et si tu ne le connais pas, ('ascii','replace') passera à tous les
>> coups...

> Je l'ai sous la main :
> import locale
> print locale.getdefaultlocale()[1]
> permet de connaître le charset courant.


Tiens, j'ai le même résultat (CP1252) dans une boite DOS que dans une fenêtre Windows.
Aurais-je dis une bêtise ?
Il faut que je vérifie (mais c'est à la maison).
  Réponse avec citation
Vieux 08/10/2007, 11h28   #16
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

>> import locale
>> print locale.getdefaultlocale()[1]
>> permet de connaître le charset courant.

>
> Tiens, j'ai le même résultat (CP1252) dans une boite DOS que dans une
> fenêtre Windows.
> Aurais-je dis une bêtise ?


Mé non, c'est juste.
Exemple :
import locale
print locale.getdefaultlocale()[1]
print "voilà l'été"
affiche cp1252 en boîte dos comme en fenêtré.
L'os nous rend sa page de code préférée dans les deux cas, mais
l'affichage respecte le charset utilisé dans le code, ce qui produit un
affichage incohérent dans la boite dos
  Réponse avec citation
Vieux 08/10/2007, 11h28   #17
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

>> import locale
>> print locale.getdefaultlocale()[1]
>> permet de connaître le charset courant.

>
> Tiens, j'ai le même résultat (CP1252) dans une boite DOS que dans une
> fenêtre Windows.
> Aurais-je dis une bêtise ?


Mé non, c'est juste.
Exemple :
import locale
print locale.getdefaultlocale()[1]
print "voilà l'été"
affiche cp1252 en boîte dos comme en fenêtré.
L'os nous rend sa page de code préférée dans les deux cas, mais
l'affichage respecte le charset utilisé dans le code, ce qui produit un
affichage incohérent dans la boite dos
  Réponse avec citation
Vieux 08/10/2007, 17h02   #18
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

david.hautbois@gmail.com a écrit :
> On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
>> david.hautb...@gmail.com a écrit :
>>
>>>>>> print u'Internet radio devices \u2014 what a good/bad idea'
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
>>> position 23: ordinal not in range(128)
>>> Rien n'y fait... toujours la même erreur.
>>> Avez vous une idée ?

>> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
>> python ?
>>
>> Bon weekend
>>
>> Julien.

>
> Je ne vois nul part l'encodage par défaut
>


chercher 'ascii' dans le fichier :

def setencoding():
"""Set the string encoding used by the Unicode implementation. The
default is 'ascii', but if you're willing to experiment, you can
change this."""
encoding = "ascii" # Default value set by _PyUnicode_Init()

enfin en meme temps, le - est géré par ascii heureusement

Julien

  Réponse avec citation
Vieux 08/10/2007, 17h02   #19
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

david.hautbois@gmail.com a écrit :
> On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
>> david.hautb...@gmail.com a écrit :
>>
>>>>>> print u'Internet radio devices \u2014 what a good/bad idea'
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
>>> position 23: ordinal not in range(128)
>>> Rien n'y fait... toujours la même erreur.
>>> Avez vous une idée ?

>> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
>> python ?
>>
>> Bon weekend
>>
>> Julien.

>
> Je ne vois nul part l'encodage par défaut
>


chercher 'ascii' dans le fichier :

def setencoding():
"""Set the string encoding used by the Unicode implementation. The
default is 'ascii', but if you're willing to experiment, you can
change this."""
encoding = "ascii" # Default value set by _PyUnicode_Init()

enfin en meme temps, le - est géré par ascii heureusement

Julien

  Réponse avec citation
Vieux 08/10/2007, 18h15   #20
david.hautbois@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

On Oct 8, 6:02 pm, JB <zo...@chez.Com> wrote:
> david.hautb...@gmail.com a écrit :
>
>
>
> > On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
> >> david.hautb...@gmail.com a écrit :

>
> >>>>>> print u'Internet radio devices \u2014 what a good/bad idea'
> >>> Traceback (most recent call last):
> >>> File "<stdin>", line 1, in <module>
> >>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> >>> position 23: ordinal not in range(128)
> >>> Rien n'y fait... toujours la même erreur.
> >>> Avez vous une idée ?
> >> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> >> python ?

>
> >> Bon weekend

>
> >> Julien.

>
> > Je ne vois nul part l'encodage par défaut

>
> chercher 'ascii' dans le fichier :
>
> def setencoding():
> """Set the string encoding used by the Unicode implementation. The
> default is 'ascii', but if you're willing to experiment, you can
> change this."""
> encoding = "ascii" # Default value set by _PyUnicode_Init()
>
> enfin en meme temps, le - est géré par ascii heureusement
>
> Julien


J'utilise python2.5.
Je n'ai pas cette portion de code dans site.py.
Dans /usr/lib/python2.5, je n'ai aucun fichier qui contient la méthode
setencoding.
Le caractère qui pose problème n'est pas - , mais un long - (mal
retranscrit sur cette page)

  Réponse avec citation
Vieux 08/10/2007, 18h15   #21
david.hautbois@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

On Oct 8, 6:02 pm, JB <zo...@chez.Com> wrote:
> david.hautb...@gmail.com a écrit :
>
>
>
> > On Oct 6, 5:14 pm, JB <zo...@chez.Com> wrote:
> >> david.hautb...@gmail.com a écrit :

>
> >>>>>> print u'Internet radio devices \u2014 what a good/bad idea'
> >>> Traceback (most recent call last):
> >>> File "<stdin>", line 1, in <module>
> >>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
> >>> position 23: ordinal not in range(128)
> >>> Rien n'y fait... toujours la même erreur.
> >>> Avez vous une idée ?
> >> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> >> python ?

>
> >> Bon weekend

>
> >> Julien.

>
> > Je ne vois nul part l'encodage par défaut

>
> chercher 'ascii' dans le fichier :
>
> def setencoding():
> """Set the string encoding used by the Unicode implementation. The
> default is 'ascii', but if you're willing to experiment, you can
> change this."""
> encoding = "ascii" # Default value set by _PyUnicode_Init()
>
> enfin en meme temps, le - est géré par ascii heureusement
>
> Julien


J'utilise python2.5.
Je n'ai pas cette portion de code dans site.py.
Dans /usr/lib/python2.5, je n'ai aucun fichier qui contient la méthode
setencoding.
Le caractère qui pose problème n'est pas - , mais un long - (mal
retranscrit sur cette page)

  Réponse avec citation
Vieux 09/10/2007, 12h44   #22
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python


> J'utilise python2.5.
> Je n'ai pas cette portion de code dans site.py.
> Dans /usr/lib/python2.5, je n'ai aucun fichier qui contient la méthode > setencoding.
> Le caractère qui pose problème n'est pas - , mais un long - (mal > retranscrit sur cette page)



ok je n'avais pas bien vu en effet le long -

chez moi (debian) site.py est dans /etc/python2.4/site.py et à la ligne
363 j'ai :

encoding = "ascii"

++

Julien
  Réponse avec citation
Vieux 09/10/2007, 12h44   #23
JB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python


> J'utilise python2.5.
> Je n'ai pas cette portion de code dans site.py.
> Dans /usr/lib/python2.5, je n'ai aucun fichier qui contient la méthode > setencoding.
> Le caractère qui pose problème n'est pas - , mais un long - (mal > retranscrit sur cette page)



ok je n'avais pas bien vu en effet le long -

chez moi (debian) site.py est dans /etc/python2.4/site.py et à la ligne
363 j'ai :

encoding = "ascii"

++

Julien
  Réponse avec citation
Vieux 10/10/2007, 17h05   #24
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

Bonsoir,
>>>>> print u'Internet radio devices \u2014 what a good/bad idea'

>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
>> position 23: ordinal not in range(128)
>>

> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> python ?
>


Ce qui est tout de même fort, et que je ne m'explique pas, c'est que le
même programme lançé dans une boîte dos va donner un affichage correct
et va se planter s'il est lancé en GUI depuis par exemple Boa.
Et ça ne marche effectivement dans les deux cas que si l'on force
l'encodage dans site.py.
Pourquoi dans un cas l'encodage correct est initialisé, et pas dans
l'autre ?

nb: windows xp, python 2.4.4
Le programme :
# -*- coding: cp1252 -*-
print unicode("voilà l'été",'cp1252')
  Réponse avec citation
Vieux 10/10/2007, 17h05   #25
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème d'affichage de caractères dans la console python

Bonsoir,
>>>>> print u'Internet radio devices \u2014 what a good/bad idea'

>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in
>> position 23: ordinal not in range(128)
>>

> Verifier l'encodage par defaut dans le fichier lib/site.py de la distrib
> python ?
>


Ce qui est tout de même fort, et que je ne m'explique pas, c'est que le
même programme lançé dans une boîte dos va donner un affichage correct
et va se planter s'il est lancé en GUI depuis par exemple Boa.
Et ça ne marche effectivement dans les deux cas que si l'on force
l'encodage dans site.py.
Pourquoi dans un cas l'encodage correct est initialisé, et pas dans
l'autre ?

nb: windows xp, python 2.4.4
Le programme :
# -*- coding: cp1252 -*-
print unicode("voilà l'été",'cp1252')
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 22h40.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,28932 seconds with 33 queries