Convertir UTF-8 a cadenas literales en Python

Tengo una cadena en formato UTF-8 pero no estoy tan seguro de cómo convertir esta cadena a su literal de carácter correspondiente. Por ejemplo tengo la cadena:

Mi cadena es: 'Entre\xc3\xa9'

Ejemplo uno:

Este código:

 u'Entre\xc3\xa9'.encode('latin-1').decode('utf-8') 

devuelve el resultado: u'Entre\xe9'

Si luego continúo imprimiendo esto:

 print u'Entre\xe9' 

Me sale el resultado: Entreé

Esto es genial y está cerca de lo que necesito. El problema es que no puedo hacer de ‘Entre \ xc3 \ xa9’ una variable y pasarla a través de los pasos ya que esto se rompe. ¿Algún consejo para que esto funcione?

Ejemplo:

 a = 'Entre\xc3\xa9' b = 'u'+ a.encode('latin-1').decode('utf-8') c= 'u'+ b 

Me gustaría que el resultado de “c” fuera:

 Entreé 

La syntax de u'' solo funciona para literales de cadena , por ejemplo, la definición de valores en el código fuente. El uso de la syntax hace que se cree un objeto unicode , pero esa no es la única forma de crear dicho objeto.

No puede crear un valor unicode partir de una cadena de bytes agregando u delante de ella. Pero si llamó a str.decode() con la encoding correcta, obtendrá un valor unicode . A la inversa, puede codificar objetos unicode a cadenas de bytes con unicode.encode() .

Tenga en cuenta que al mostrar un objeto unicode , Python lo representa utilizando la syntax literal de la cadena Unicode nuevamente (por lo que u'...' ), para facilitar la depuración. Puede volver a pegar la representación en un intérprete de Python y obtener un objeto con el mismo valor.

Su valor a se define utilizando un literal de cadena de bytes, por lo que solo necesita descodificar:

 a = 'Entre\xc3\xa9' b = a.decode('utf8') 

Su primer ejemplo creó un Mojibake , una cadena Unicode que contiene puntos de código Latin-1 que en realidad representan UTF-8 bytes. Esta es la razón por la que primero tuvo que codificar a Latin-1 (para deshacer el Mojibake), luego decodificar desde UTF-8.

Es posible que desee leer sobre Python y Unicode en el CÓMO de Unicode . Otros artículos de interés son:

  • El Absoluto Mínimo que todos los desarrolladores de software absolutamente, positivamente deben saber sobre Unicode y conjuntos de caracteres (¡sin excusas!) Por Joel Spolsky

  • Unicode pragmático de Ned Batchelder