IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Affichage caractère degrés "°"


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Affichage caractère degrés "°"
    Bonjour,

    J'ai fais une interface graphique avec Tkinter dans laquelle l'utilisateur sélectionne un dossier à traiter dont l'adresse s'inscrit dans un "Entry".
    Le problème est que la majorité des intitulés des dossiers comporte le caractère "°" (degrés). Et le programme affiche un message d'erreur lors de l'insertion de l'adresse dans le "Entry" :

    "UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 56: ordinal not in range(128)"

    Je sais que c'est un problème d'encodage de la chaine mais je n'est pas trouvé la solution.
    Pourriez vous m'éclairer?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    L'erreur veut dire que Entry attend de l'unicode, et comme il ne reçoit qu'un str, il prend l'initiative de le transformer en unicode. Mais ne sachant pas sous quel encodage le str est écrit, il utilise ANSI, ce qui conduit la plupart du temps à un plantage.

    Donc: il faut dire à Python sous quel encodage a été écrit le str, et demander sa conversion en unicode. D'après le message d'erreur le '°' se traduit en '\xb0', et d'après la table des caractères, c'est du Windows ('cp1252') ou du 'latin1'.

    Si x est la chaine encodée 'cp1252', la conversion en unicode se fera comme suit:

    Et c'est ce qu'il faudra envoyer à Entry.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Caractères du type \', &quot, etc
    Par CE.KA dans le forum Langage
    Réponses: 5
    Dernier message: 19/11/2009, 00h40
  2. [PL/SQL] Chaine de caractères avec une quote
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 15/05/2006, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo