Archivos diarios: 30 julio, 2009

Problemas de decodificación unicode con Reportlab y Python

Por ejemplo tenemos una base de datos con caracteres especiales (sería lo normal – Acentos y demas -), y al tratar de generar un documento PDF con Reportlab, este nos genera errores del tipo de decodificación utf-8 o unicode. (ojo que solo se presento el problema al ejecutar la aplicación en windows).

Entonces lo que podemos hacer en estos casos es transformar el string y eliminar los caracteres especiales, aqui esta el codigo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from unicodedata import normalize

def normalizar_string(unicode_string):
return normalize('NFKD',unicode_string).encode('ASCII', 'ignore').lower()

unic='holí' #Ejemplo de string normal.
string=unicode(unic, 'utf-8') #Transformacion a unicode.

print normalizar_string(string) #llamamos la funcion e imprimimos.