[pyar] Unicode, str y archivos binarios...
Alejandro Santos
listas en alejolp.com
Vie Mar 15 11:52:13 ART 2013
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
More information about the pyar
mailing list