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.
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 :
Citation:
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) :
Citation:
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 :
Citation:
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:
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 ?