On Tue, 4 Nov 2008 17:47:32 +0100, "Zanon Samuele" <[EMAIL PROTECTED]> wrote: > ciao a tutti... ho uno script in python per la generazione mediante > reportlab di un paio di file pdf... solo che ho un errore (ricevuto > mediante > cgitb.enable()) che ha come intestazione > > <type 'exceptions.UnicodeDecodeError'>
Chi effettua la codifica che fa scaturire l'errore? Il db? reportlab? il tuo programma? Un po' di contesto in più non guasterebbe: per esempio il traceback e il valore delle stringhe che generano l'eccezione. > ho scoperto che è un problema di codifica dei caratteri (estratti da una > tabella mysql) e che probabilmente dipende dal fatto che ci sono dei > caratteri speciali che non riesce a gestire. come posso risolvere il > problema senza mettere mano alle mille e passa righe del database? Io credo che da qualche parte stia avvenendo una conversione usando un encoding di default e senza una politica di gestione degli errori di conversione settata. Mi viene in mente che stai passando dell'unicode a reportlab, che invece si aspetta una stringa ad 8 bit, e da qualche parte viene effettuato l'encoding in ascii, ma visto che il tuo errore è nel decode, allora non saprei. Ci sono chiamate a reportlab a cui passi stringhe unicode? In questo caso prova a mettere prima una conversione tipo s = s.encode('cp1252', 'replace') ma non sono sicuro che l'errore sia qua: dici troppo poco. > aggiungo che come seconda riga ho impostato # -*- coding: utf-8 -*- Questo non c'entra con il database: riguarda solo l'encoding del sorgente (ma se hai dei letterali unicode nei sorgenti, che poi passi a reportlab, devono subire lo stesso trattamento). -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python