2011-03-03 23 views
6

En Python, hay un método encode en cadenas Unicode para codificar de unicode a una cadena de bytes. Hay un método decode en cadena para hacer lo contrario.Método de codificación Python String

¿Pero estoy confundido para qué es el método encode en la secuencia?

+0

Echa un vistazo a esta presentación 'Unicode en Python, completamente desmitificado' http://farmdev.com/talks/unicode/ – rubayeet

+0

Lo he visto. No explica mi pregunta. – amit

Respuesta

10

Es útil para códecs que no sean de texto.

>>> 'Hello, world!'.encode('hex') 
'48656c6c6f2c20776f726c6421' 
>>> 'Hello, world!'.encode('base64') 
'SGVsbG8sIHdvcmxkIQ==\n' 
>>> 'Hello, world!'.encode('zlib') 
'x\x9c\xf3H\xcd\xc9\xc9\xd7Q(\xcf/\xcaIQ\x04\x00 ^\x04\x8a' 
+0

¡Guau, incluso funciona si la cadena codificada no es compatible con la codificación predeterminada! Eso debe significar que no siempre decodifica la cadena para unicode primero ... – DzinX

+0

Ok, parece que decodificará a unicode si codificamos a una de las codificaciones de caracteres. Extraño. – amit

5

Primero se decodifica en Unicode usando la codificación predeterminada, luego se vuelve a codificar en una cadena de bytes.

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii' 
>>> sys.setdefaultencoding('latin-1') 
>>> '\xc4'.encode('utf-8') 
'\xc3\x84' 

Aquí, '\xc4' es América-1 para A y '\xc3\x84' es UTF-8 para una.

-4

¿Por qué no quiere leer usted mismo la documentación de Python?

http://docs.python.org/release/2.5.2/lib/string-methods.html

""" encode ([codificación [, errores]]) devuelven una versión codificada de la cadena. Codificación por defecto es la corriente de codificación de cadena predeterminada. Errores pueden ser administrados para configurar una combinación de tratamiento de errores diferente El valor predeterminado para los errores es 'estricto', lo que significa que los errores de codificación generan un error Unicode. Otros valores posibles son 'ignorar', 'reemplazar', 'xmlcharrefreplace', 'backslashreplace' y cualquier otro nombre registrado mediante codecs.register_error, ver sección 4.8 .1 Para obtener una lista de posibles codificaciones, consulte la sección 4.8.3. Nuevo en la versión 2.0. Modificado en la versión 2.3: Soporte para 'xmlcharrefreplace' y 'backslashreplace' y otros esquemas de manejo de errores agregados. "" "

+0

La documentación de Python ha realizado un trabajo pobre al explicar cómo funciona la codificación y decodificación, y cuando ocurren conversiones implícitas. En este caso, un simple puntero a los documentos no es lo suficientemente bueno. – Triptych

Cuestiones relacionadas