Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1258 connectés 

  FORUM HardWare.fr
  Programmation
  Python

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°685154
noelemac
Posté le 26-03-2004 à 16:14:58  profilanswer
 

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
mood
Publicité
Posté le 26-03-2004 à 16:14:58  profilanswer
 

n°685161
Taz
bisounours-codeur
Posté le 26-03-2004 à 16:19:51  profilanswer
 

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

n°685169
noelemac
Posté le 26-03-2004 à 16:26:07  profilanswer
 

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.
 

n°685175
Taz
bisounours-codeur
Posté le 26-03-2004 à 16:31:45  profilanswer
 

ben type(x) ...

n°685213
noelemac
Posté le 26-03-2004 à 17:14:01  profilanswer
 

Ok, (je début le phyton donc je suis pas doué)
 
il me donne le type unicode:
 
<type 'unicode'>

n°685214
Taz
bisounours-codeur
Posté le 26-03-2004 à 17:15:31  profilanswer
 

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

n°685230
noelemac
Posté le 26-03-2004 à 17:31:48  profilanswer
 

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
n°685244
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-03-2004 à 17:44:54  profilanswer
 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°685246
Taz
bisounours-codeur
Posté le 26-03-2004 à 17:46:52  profilanswer
 

ben ton truc supporte pas l'unicode, voilà tout, convertit tout ça en str dans une locale que tu veux

n°685248
noelemac
Posté le 26-03-2004 à 17:47:20  profilanswer
 

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]

mood
Publicité
Posté le 26-03-2004 à 17:47:20  profilanswer
 

n°685253
Taz
bisounours-codeur
Posté le 26-03-2004 à 17:50:38  profilanswer
 

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

n°685260
noelemac
Posté le 26-03-2004 à 17:58:12  profilanswer
 

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:

n°685262
noelemac
Posté le 26-03-2004 à 18:00:20  profilanswer
 

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
n°685265
noelemac
Posté le 26-03-2004 à 18:02:52  profilanswer
 

j'ai trouvé, enfin, je doit rajouter:
 
phrase.encode("iso-8859-1" )
 
Merci de ton aide taz et antp aussi d'avoir essayé.  

n°685290
Taz
bisounours-codeur
Posté le 26-03-2004 à 18:24:08  profilanswer
 

t'as intérêt à mettre un 'replace', par ce que le jour ou quelqu'un utilise vraiment ton appli ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

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

 

Sujets relatifs
[RESOLU][VB6] Lire un fichier texte[RESOLU] [VB6] Cherche guide du développeur
[Resolu]erreur de base avec une stringstreamdeterminer la taille d'un fichier [résolu]
python + mysql + exemple de connexion[RESOLU][ORACLE] Gestion des nouvelles valeurs à insérer
[MySQL] comment faire : DELETE FROM table1,table2 WHERE id=2 [résolu][VBA] Browser répertoire [RESOLU] merci ixemul
[python] copier un objet[résolu]lancement de requetes contenu dans des fichiers texte (vb6)
Plus de sujets relatifs à : Python : "KeyError: u'\xe9'". [Résolu .encode("iso-8859-1")]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR