2011-10-03 8 views
65

Tengo un problema con mi codificación en Python. He intentado diferentes métodos pero parece que no puedo encontrar la mejor manera de codificar mi salida a UTF-8.La decodificación de Python Unicode no es compatible

Esto es lo que estoy tratando de hacer:

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

searchGoogle devuelve el primer resultado de Google para param.

Este es el error que se obtiene:

exceptions.TypeError: decoding Unicode is not supported 

¿Alguien sabe cómo puedo hacer Python codificar mi producción en UTF-8 para evitar este error?

Respuesta

83

Parece que google.searchGoogle(param) ya vuelve 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 

Así que lo que quiere decir:

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

Como nota al margen, el código lo espera para devolver una cadena utf-8 codificado así que lo que fue el apunte en la decodificación (usando unicode()) y la codificación de vuelta (usando .encode()) utilizando la misma codificación?

+4

Honestamente, el 'unicode()' solo estaba tratando de entender lo que estaba sucediendo. Muchas gracias :-) – simonbs

+2

Ahora, algunas veces, el códec 'ascii 'no puede decodificar el byte 0xc3 en posición'. ¿Sabes por qué es eso? – simonbs

+2

¿En la línea que sugerí? Entonces significaría que searchGoogle() devolvió una cadena con 0xC3 byte. Llamar a '.encode()' en eso hace que Python intente convertir primero a unicode (usando codificación ascii). No sé por qué searchGoogle() algunas veces devolverá unicode y algunas veces una cadena. Tal vez depende de lo que le das en 'param'? Trata de apegarte a un tipo. – yak

Cuestiones relacionadas