Python : "KeyError: u'\xe9'". [Résolu .encode("iso-8859-1")]

Python : "KeyError: u'\xe9'". [Résolu .encode("iso-8859-1")] - Python - Programmation

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 !!!  :jap:  :jap:  :jap:


Message édité par noelemac le 26-03-2004 à 18:03:43
Reply

Marsh Posté le 26-03-2004 à 16:14:58   

Reply

Marsh Posté le 26-03-2004 à 16:19:51    

c'est quoi le type de la chaine que tu récupères ? son codage ?

Reply

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.
 

Reply

Marsh Posté le 26-03-2004 à 16:31:45    

ben type(x) ...

Reply

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'>

Reply

Marsh Posté le 26-03-2004 à 17:15:31    

ben c'est déjà de l'unicode

Reply

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  :jap:


Message édité par noelemac le 26-03-2004 à 17:32:04
Reply

Marsh Posté le 26-03-2004 à 17:44:54    

le caractère e9 ça existe ça en unicode ?
en UTF8 pas en tout cas


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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

Reply

Marsh Posté le 26-03-2004 à 17:47:20    

antp a écrit :

le caractère e9 ça existe ça en unicode ?
en UTF8 pas en tout cas


 
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]

Reply

Marsh Posté le 26-03-2004 à 17:47:20   

Reply

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

Reply

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  :jap:

Reply

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


Message édité par noelemac le 26-03-2004 à 18:00:36
Reply

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é.  

Reply

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 ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed