es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir “\xF0\x9D\x96\xA7\xF0\x9D” a una cadena “normal” en Python.

Hoy me topé con un problema en el cual un cliente nos enviaba un correo electrónico. Extraje el correo electrónico a través de la API de Zendesk y quería guardarlo en nuestra base de datos MySQL. Al empujar el correo electrónico me apareció el error “valor incorrecto de cadena” (‘\xF0\x9D\x96\xA7\xF0\x9D’), lo cual fue extraño ya que el contenido del correo electrónico era simplemente texto plano como “Hola – ¿dónde está mi paquete?” (en otro idioma). Después de un tiempo me di cuenta que todas las letras no parecían “letras ordinarias de cadena” y resultó que el “Hola” en el correo electrónico no era igual a “Hola” es decir email_body[:5]==”Hello” fue falso (¿quizás se usó una fuente extraña en el correo electrónico?). La codificación del cuerpo mostró que el cuerpo en realidad comenzaba con \xF0\x9D\x96\xA7\xF0\x9D y no “Hola”.

El problema, como se muestra arriba, es que “Hola” en el correo no es igual a “Hola” “ordinario”, por lo que no puedo comparar cadenas, manipular cadenas, etc.

¿Existe alguna forma de convertir el “Hola” que obtuve del cuerpo del correo electrónico a una cadena ordinaria, de modo que las dos cadenas “Hola” sean iguales nuevamente?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes convertir el “Hola” que recibiste del cuerpo del correo electrónico en una cadena normal utilizando los métodos .encode() y .decode(). El método .encode() convertirá la cadena en un objeto similar a bytes, y el método .decode() convertirá el objeto similar a bytes de vuelta a una cadena. Por ejemplo, si tienes una cadena my_string = "Hola", puedes usar my_string.encode() para convertirla en un objeto similar a bytes, y luego usar my_string.decode() para convertirlo de vuelta a una cadena. Esto asegurará que las dos cadenas “Hola” sean iguales nuevamente.

Comments are closed.