[pyar] Unicode, str y archivos binarios...

Santiago Paleka santiagopaleka en gmail.com
Vie Mar 15 12:33:52 ART 2013


El 15 de marzo de 2013 11:52, Alejandro Santos <listas en alejolp.com>escribió:

> 2013/3/14 Santiago Paleka <santiagopaleka en gmail.com>:
> >
> > binario = ""
> > binario = binario + chr(0xAA) + chr(0x04)
> > nextstring = ""
> > nextstring += u"áéíóú"
> > binario   += chr(len(nextstring)) + nextstring
> >
> > UnicodeDecodeError: 'utf8' codec can't decode byte 0xaa in position 0:
> > invalid start byte
> >
>
> (va de vuelta)
>
> Acá estás concatenando una cadena "string" de bytes crudos con una
> cadena Unicode, y Python está intentando promover todo el string a
> Unicode, asumiendo que el string en "binario" es un UTF-8 (cosa que no
> lo es). Los bytes de header que están al comienzo de "binario"
> (chr(0xAA) + chr(0x04)) no representan una cadena codificada en UTF-8.
>
> > Lo que yo quisiera, en el ejemplo anterior, es obtener en binario = 0xAA
> > 0x04 0x05 0xE1 0XE9 0XED 0XF3 0XFA
> >
> > Espero haberme explicado medianamente bien.
> > Como puedo hacer esto?
> >
>
> Si querés que la u con tilde sea 0xFA, deberías hacer:
>
> >>> binario   += chr(len(nextstring)) + nextstring.encode("latin1")
> >>> print repr(binario)
> '\xaa\x04\x05\xe1\xe9\xed\xf3\xfa'
>
> --
> Alejandro Santos
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Si Alejandro, gracias, es así justamente como lo solucioné.
con la diferencia que le agregué .encode("latin1","ignore") para que no
explote.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130315/d50e123c/attachment.html>


More information about the pyar mailing list