hexadecimal - python ascii to byte
Codificando una cadena a ascii (2)
Tengo una cadena larga que quiero codificar para ascii. Estoy haciendo:
s = s.encode(''ascii'', ''replace'')
pero entiendo:
''ascii'' codec can''t decode byte 0xc3 in position 2646: ordinal not in range(128)
(También he intentado ''ignore''
pero no ayuda.)
¿Qué estoy haciendo mal?
Su cadena ya está codificada con alguna codificación. Antes de codificarlo en ascii, debes decodificarlo primero .
Python es implicidad al intentar decodificarlo (Es por eso que obtienes UnicodeDecodeError
no UnicodeEncodeError
).
Puede resolver el problema explicitando la decodificación de su cadena de bytes (usando la codificación apropiada) antes de tratar de volver a codificarlo en ascii.
Ejemplo:
s = s.decode(''some_encoding'').encode(''ascii'', ''replace'')
Utilice la codificación correcta que su cadena fue codificada en primer lugar, en lugar de ''some_encoding''
.
Debe saber qué codificación está usando una cadena antes de poder decodificarla. ¿De dónde sacaste el hilo?
encode
debe usarse en objetos unicode
para convertirlo a str
. Si tiene un objeto str, debe usar la decode
para convertirlo a unicode
.