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 :

decoding Unicode is not supported [Fait]


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut decoding Unicode is not supported
    Bonjour,
    voila j´ai un script python (external methode) auquel j´ai pris soin de lui indiquer en début de ligne :
    # -*- encoding: iso-8859-1 -*-

    Mon script python parse mon fichier xml, qui a dans l´entete iso-8859-1
    voici un bout de code pour comprendre la suite: je souhaite juste remplacer quelquechose dans le code obtenu en y insérant le contenu lu entre deux balises nommé nodetx:

    nodetx = unicode(nodetx,"iso8859_1")
    tag="blabla"
    str1 = unicode("name=\""+tag+"\" ","iso8859_1")
    str2 = unicode("name=\""+tag+"\" value=\""+nodetx+"\" ","iso8859_1")
    win = replace(win,str1.decode("iso8859_1"),str2.decode("iso8859_1"))

    Mon message d´erreur qui m´exaspere :
    decoding Unicode is not supported

    Je ne vois pas d´ou vient le probleme... :-(
    Sur la console python avec des chaines simples, cela marche.

  2. #2
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut
    utilises-tu la version 2.4 de python ou une version antérieure ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    j´utilise la version 2.3.3 désolé j´aurai du préciser.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    bonjour,

    une chaine unicode ne possede pas de methode decode
    par contre il existe une méthode encode.

    faire dir(u'x') pour la liste des methodes

    le_GLu
    Cours Python : http://python.developpez.com/cours/
    Les ressources (liens) en français sur Python.
    Python et l'unicode. Les caractères accentués dans un terminal 'DOS'.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut ahhhh
    enfin , ca marche... effectivement il n´y a pas de methode decode pour mon unicode.
    Et je devais juste mettre mon contenu win en unicode. str1 l´etait deja par defaut, et str2 aussi. Donc aucun decode nulle part finalement...
    ca donne :

    win = unicode(win,"iso8859_1")
    tag="blabla"
    str1 = "name=\""+tag+"\" "
    str2 = "name=\""+tag+"\" value=\""+nodetx+"\" "
    win = replace(win,str1,str2)

    merci !

    => http://python.developpez.com/faq/?page=Unicode

  6. #6
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 392
    Points : 863
    Points
    863
    Par défaut même problème : TypeError: decoding Unicode is not supported
    bonjour,

    désolé de réouvrir ce vieux sujet mais j'ai le même problème sans arriver à le résoudre.

    voilà j'ai un applicatif en prod (openerp4) sur un vieux serveur.
    j'ai réinstallé dans une vm une config identique au vieux serveur.

    en prod la version de python est :
    Python 2.4.4 (#2, Apr 15 2008, 23:43:20)
    [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    et dans ma vm, python est (un poil plus récent) :

    Python 2.4.4 (#2, Jan 24 2010, 11:19:18)
    [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    quand je lance mon applicatif dans la vm, j'ai pourtant ce message d'erreur :

    openerp-client-1.0.0/bin/common/common.py", line 325, in error
    buf.set_text(unicode(details,'latin1').encode('utf-8'))
    TypeError: decoding Unicode is not supported
    que faire ?
    (je répête les codes sources sont identiques, sur les 2 systèmes, la debian aussi, python aussi).
    peut-être que dans l'un le coding par défaut pris par python est différence de l'autre ? comment savoir ?

    si ça peut aider, voiçi la fonction complète contenant la partie de code 'unicode' où l'erreur se produit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    def error(title, message, details=''):
     
    	log = logging.getLogger('common.message')
    	log.error('MSG %s: %s' % (str(message),details))
     
    	wid_list = ['email_entry','id_entry','name_entry','phone_entry','company_entry','error_details','explanation_textview','remarks_textview']
    	required_wid = ['email_entry', 'name_entry', 'company_name', 'id_entry']
    	colors = {'invalid':'#ffdddd', 'readonly':'grey', 'required':'#ddddff', 'normal':'white'}
     
    	support_id = options['support.support_id']
    	recipient = options['support.recipient']
     
    	sur = glade.XML(terp_path("terp.glade"), "win_error",gettext.textdomain())
    	win = sur.get_widget('win_error')
    	sur.get_widget('error_title').set_text(str(title))
    	sur.get_widget('error_info').set_text(str(message))
    	buf = gtk.TextBuffer()
    	buf.set_text(unicode(details,'latin1').encode('utf-8'))
    	sur.get_widget('error_details').set_buffer(buf)
     
    	sur.get_widget('id_entry').set_text(support_id)
    je suis en train de me me dire que peut-être, ma VM n'a pas le codage latin installé dans linux et que le utf8 par défaut. comment savoir ?

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le message d'erreur "TypeError: decoding Unicode is not supported " est émis quand on essaye de convertir en unicode une chaine qui y est déjà.

    Pour le confirmer, on peut ajouter la ligne "print type(details)" juste avant la ligne qui déclenche l'erreur.

    Pourquoi y a-t-il une différence entre les 2 versions Python quasi identiques? Je ne sais pas. Il doit y avoir une différence dans les appels de la fonction error puisque 'details' est l'un des paramètres passés à cette fonction.

    Pour résoudre ce pb: convertir avec un test du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if isinstance(details, str):
        details = unicode(details, 'latin1')
    Tyrtamos
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/02/2007, 11h29
  2. Message d'erreur "https is not supported"
    Par nono08 dans le forum Web
    Réponses: 5
    Dernier message: 04/04/2006, 14h10
  3. checkdnsrr is not supported
    Par the watcher dans le forum Langage
    Réponses: 14
    Dernier message: 03/02/2006, 22h19
  4. socket: Address family not supported by protocol ??
    Par innosang dans le forum Réseau
    Réponses: 5
    Dernier message: 21/12/2005, 11h32
  5. Fatal Error : OpenGL GLX extension not support
    Par kacedda dans le forum GLUT
    Réponses: 5
    Dernier message: 06/06/2005, 10h28

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