¡No hay nada de malo con su cadena! Usted acaba de confundir encode()
y decode()
. La cadena es símbolos significativos. Para convertirlo en bytes que pueden almacenarse en un archivo o transmitirse a través de Internet, use encode()
con una codificación como UTF-8. Cada codificación es un esquema para convertir símbolos significativos en bytes planos de salida.
Cuando llegue el momento de hacer lo contrario - que tomar algunos bytes sin formato de un archivo o un socket y convertirlos en símbolos, como letras y números - se decodificación los bytes utilizando el método de cadenas de bytes decode()
en Python 3
>>> str_version = 'នយោបាយ'
>>> str_version.encode('utf-8')
b'\xe1\x9e\x93\xe1\x9e\x99\xe1\x9f\x84\xe1\x9e\x94\xe1\x9e\xb6\xe1\x9e\x99'
¿Ves esa gran línea larga de bytes? Esos son los bytes que utiliza UTF-8 para representar su cadena, si necesita transmitir la cadena a través de una red, o almacenarlos en un documento. Hay muchas otras codificaciones en uso, pero parece ser la más popular. Cada codificación puede convertir símbolos significativos como ន y យោ en bytes, los pequeños números de 8 bits con los que se comunican las computadoras.
>>> rawbytes = str_version.encode('utf-8')
>>> rawbytes
b'\xe1\x9e\x93\xe1\x9e\x99\xe1\x9f\x84\xe1\x9e\x94\xe1\x9e\xb6\xe1\x9e\x99'
>>> rawbytes.decode('utf-8')
'នយោបាយ'
todavía no está limpio. ¿Podría explicarlo más claramente? gracias Brandon Craig Rhodes – kn3l
He agregado otro párrafo y algunas muestras de código. ¿Lo hacen más claro? –
Ahora está claro. Entiendo ahora por su ejemplo, muchas gracias @Brandon Craig Rhodes – kn3l