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