Python : "KeyError: u'\xe9'". [Résolu .encode("iso-8859-1")] - Python - Programmation
Marsh Posté le 26-03-2004 à 16:19:51
c'est quoi le type de la chaine que tu récupères ? son codage ?
Marsh Posté le 26-03-2004 à 16:26:07
Taz a écrit : c'est quoi le type de la chaine que tu récupères ? son codage ? |
J'aimerai bien le savoir ...
Tu a une idée de la façon dont je peut la récup ?
Voila un out de code:
Le text que je récup est tapé au clavier dans un Tkinter.Text:
stxt = Tkinter.Text (self, bg='white', height=theight, width=twidth)
Ensuite je met le texte dans le dico et je le recup dans phrase:
phrase = viewer.doe.index[label] # <- c un dico.
Marsh Posté le 26-03-2004 à 17:14:01
Ok, (je début le phyton donc je suis pas doué)
il me donne le type unicode:
<type 'unicode'>
Marsh Posté le 26-03-2004 à 17:31:48
Ok merci de ton aide.
En fait je pensai avoir un pb de code car quand je fait un split sur un chaine avec de "é" ou "!" ca plante. Exemple:
"il était une fois ... !"
la phrase splité sur l'espace:
[u'il', u'\xe9tait', u'une', u'fois', u'...', u'!']
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python\lib\lib-tk\Tkinter.py", line 1345, in __call__
return self.func(*args)
File "C:\programmation\python\MaFrame5.py", line 245, in creerDoe
self.creerUnePage(label,fichierPdf,haut)
File "C:\programmation\python\MaFrame5.py", line 280, in creerUnePage
fichierPdf.drawString((PAGE_WIDTH-tsize[0])/2,PAGE_HEIGHT-tsize[1]-120,valeurUnicodeSplite[1])
File "C:\PROGRA~1\Python\lib\reportlab\pdfgen\canvas.py", line 1190, in drawString
t.textLine(text)
File "C:\PROGRA~1\Python\lib\reportlab\pdfgen\textobject.py", line 279, in textLine
self._code.append('%s T*' % self._formatText(text))
File "C:\PROGRA~1\Python\lib\reportlab\pdfgen\textobject.py", line 259, in _formatText
text = self._canvas._escape(text)
File "C:\PROGRA~1\Python\lib\reportlab\pdfgen\canvas.py", line 255, in _escape
return _escapePDF(s)
File "C:\PROGRA~1\Python\lib\reportlab\pdfbase\pdfutils.py", line 138, in _escape
return join(map(lambda c, d=_ESCAPEDICT: d[c],s),'')
File "C:\PROGRA~1\Python\lib\reportlab\pdfbase\pdfutils.py", line 138, in <lambda>
return join(map(lambda c, d=_ESCAPEDICT: d[c],s),'')
KeyError: u'\xe9'
Si je remplace valeurUnicodeSplite[1] par valeurUnicodeSplite[0] ca marche puisque le premier référence "était" avec un accent et le second référence "il" et la pas d'erreur...
Please help
Marsh Posté le 26-03-2004 à 17:44:54
le caractère e9 ça existe ça en unicode ?
en UTF8 pas en tout cas
Marsh Posté le 26-03-2004 à 17:46:52
ben ton truc supporte pas l'unicode, voilà tout, convertit tout ça en str dans une locale que tu veux
Marsh Posté le 26-03-2004 à 17:47:20
antp a écrit : le caractère e9 ça existe ça en unicode ? |
Ben c'est la question que je me pose. Mais comment je pourai avoir un "é" tout con lol.
En java je me prenai pas la tête, ici python commence a me chauffer les oreilles, je suis dessus depuis ce matin...
Et il me fait pas ca qu'avec le "é" mais aussi avec d'autre car autre que [a..z|A..Z]
Marsh Posté le 26-03-2004 à 17:50:38
c'est pas ma faut si tu n'entends rien aux histoires de codage de caractères ... tu récupère de l'unicode, tu 'encode' comme le dis l'aide.
c'est toi qui me chauffe les oreilles
Marsh Posté le 26-03-2004 à 17:58:12
merci de ton aide, mais je connaissai pas avant le systeme. (je suis pas le seul j'ai l'impression)
Si j'essaie de le transformer en str, avec .__srt__()
ca foire aussi:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3: ordinal not in range(128)
Maintenant je te force pas a répondre si ca te chauffe les oreilles lol. Je suis content que tu puisse m'aider car tu a l'air de t'y connaitre mais perso j'ai du mal...
A la rigueur, donne moi le lien de l'aide dont tu me parle, je me débrouillerai avec.
Encore merci et désolé pour tes oreilles
Marsh Posté le 26-03-2004 à 18:00:20
pb similaire ici et je voit pas de réponse.
https://sourceforge.net/tracker/?fu [...] oup_id=103
Marsh Posté le 26-03-2004 à 18:02:52
j'ai trouvé, enfin, je doit rajouter:
phrase.encode("iso-8859-1" )
Merci de ton aide taz et antp aussi d'avoir essayé.
Marsh Posté le 26-03-2004 à 18:24:08
t'as intérêt à mettre un 'replace', par ce que le jour ou quelqu'un utilise vraiment ton appli ...
Marsh Posté le 26-03-2004 à 16:14:58
Salut tlm,
voila mon pb:
Je travaille avec Tkinter et Python. Je récupére une string qui vient d'une zone de texte et quand j'essaye de l'utilisé, j'ai un sale message me disant qu'un des char n'est pas dans les char reconnu.
On m'a dit de décoder en utilisant la ligne suivant:
phrase = 'Les ampoules électriques ont été changée à deux reprise où ça a été nécessaire'
phraseFinal = unicode (phrase, 'latin-1')
print phraseFinal
Ce bout de code marche mais quand je remplace "les amp..." par ma variable qui contient le texte de la zone de text, il me dit qu'il peut pas décoder...
"TypeError: decoding Unicode is not supported"
J'ai essayé avec 'utf-8' etc... ca change rien.
QQ peut - il m'aider ???
MERCI !!!
Message édité par noelemac le 26-03-2004 à 18:03:43