web-dev-qa-db-fra.com

Python, le décodage Unicode n'est pas supporté

J'ai un problème avec mon encodage en Python. J'ai essayé différentes méthodes, mais je n'arrive pas à trouver le meilleur moyen de coder ma sortie au format UTF-8.

C'est ce que j'essaie de faire:

result = unicode(google.searchGoogle(param), "utf-8").encode("utf-8")

searchGoogle renvoie le premier résultat Google pour param.

C'est l'erreur que j'obtiens:

exceptions.TypeError: decoding Unicode is not supported

Est-ce que quelqu'un sait comment je peux faire Python encoder ma sortie en UTF-8 pour éviter cette erreur?

76
simonbs

On dirait que google.searchGoogle(param) renvoie déjà unicode:

>>> unicode(u'foo', 'utf-8')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    unicode(u'foo', 'utf-8')
TypeError: decoding Unicode is not supported

Donc ce que vous voulez c'est:

result = google.searchGoogle(param).encode("utf-8")

En guise de remarque, votre code s'attend à ce qu'il retourne une chaîne codée utf-8. Quel était donc l'intérêt de le décoder (avec unicode()) et de l'encoder (avec .encode() ) en utilisant le même encodage?

97
yak