Hola Foro:
Les cuento un poco mi problema.
Estoy generando reportes con PyFPDF, genero mi consulta y obtengo datos sin problemas.
Al momento de mostrar los datos como direcciones o referencias, éstos deben ser truncados para que se muestren dentro los límites que se desea. Para truncar las cadenas realizó lo siguiente:
for r in rows:
f['lbl_fecha%02d' % li] = r.cab_documento.FechaDocumento.strftime("%Y-%m-%d")
f['lbl_linea%02d' % li] = r.lineas.Nom_Linea
f['lbl_documento%02d' % li] = r.tipodocumento.Nom_TipoDocumento
f['lbl_numero%02d' % li] = "%s" % r.cab_documento.Num_Documento
if r.ctasctes.RUC != None:
f['lbl_ruc%02d' % li] = r.ctasctes.RUC
f['lbl_razon%02d' % li] = r.ctasctes.Nom_CtaCte[:25]
f['lbl_subtotal%02d' % li] = "%.2f" % r.cab_documento.SubTotal
f['lbl_impuesto%02d' % li] = "%.2f" % r.cab_documento.Impuesto
f['lbl_total%02d' % li] = "%.2f" % (r.cab_documento.SubTotal + r.cab_documento.Impuesto)
Mi problema ocurre en la linea resaltada:
f['lbl_razon%02d' % li] = r.ctasctes.Nom_CtaCte[:21]
Sucede que cuando el ultimo caracter es una letra con acento o caracter especial, como por ejemplo : HERNANDEZ VALLES ESAÚ, el programa me arroja un error.
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 23: invalid continuation byte
He tratado de ver el problema de la siguiente manera:
>>> name = 'HERNANDEZ VALLES ESAÚ'
>>> print(name)
HERNANDEZ VALLES ESAÚ
>>> print(name[:22])
HERNANDEZ VALLES ESAÚ
>>> print(name[:21])
HERNANDEZ VALLES ESA�
Al parecer cuando realizo el name[:21] el último caracter es problema.
Quizás estoy realizando un error al momento de hacer el truncamiento de la cadena.
Agradeceré alguna sugerencia.
Saludos.