Manejo de cadenas unicode

Chema Cortés py en ch3m4.org
Jue Abr 22 10:09:53 CEST 2004


El Lunes, 21 de Abril de 2003 19:05, Oziko escribió:

> Estoy haciendo un script el cual recoge los valores de un archivo .ogg,
> titulo, artista, año, etc etc, y luego los importo a una base de datos
> postgreSQL, cuando no tengo caracteres especiales en las etiquetas de
> los archivos .ogg la info se importa sin probelmas, pero si tiene
> caracteres especiales obtengo alguno de los dos siguientes errores :
>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in
> position 82: ordinal not in range(128)
>
> UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4-5:
> unexpected end of data
>
> he tratado de convertir las cadenas a unicode, pero no entiendo muy bien
> esto, le tengo que especificar a la base de datos que tambien utilizo
> codificacion unicode? Como utilizan ustedes unicode con python y alguna
> base de datos? Algun tip?

Necesitaríamos algo de código para saber mejor dónde está el problema.

Es un problema bastante habitual y lo hemos tratado mucho en la lista (¿para 
cuando un FAQ de python-es? ;-P). Cuando codificas a unicode por defecto se 
hace desde ascii7. Tienes que cambiar la codificación por defecto desde el 
sitecustomize.py (sys.setdefaultencoding)

Puesto que recoges la información de algún tipo de interface, supongo que te 
llegará ya codificada. Al convertir en unicode tienes que decirle qué sistema 
de codificación usas como segundo argumento.

Para las cadenas de texto que definas en el código, si usas python 2.3 lo 
mejor es indicarle la codificación con el comentario "enconding" en la 
primera ó segunda línea de programa:

# -*- encoding: iso8859-15 -*-

En fin, que sin código no puedo decirte más.




Más información sobre la lista de distribución Python-es