Codificación y decodificación de texto en UTF-8 en Python

Codificación y decodificación de texto en UTF-8 en Python

UTF-8 es una codificación de caracteres que representa todos los caracteres Unicode, incluyendo caracteres de idiomas asiáticos, africanos y otros idiomas que utilizan símbolos especiales. Es la codificación de caracteres más utilizada en la actualidad, y Python la usa de forma predeterminada.

En este tutorial, aprenderemos a codificar y decodificar texto en UTF-8 en Python.

Codificación de texto en UTF-8

Para codificar texto en UTF-8, podemos usar la función encode() del módulo codecs. Esta función toma dos argumentos: el texto a codificar y la codificación a usar.

Python
import codecs

texto = "Hola, mundo!"

# Codifica el texto en UTF-8
bytes_utf8 = codecs.encode(texto, "utf-8")

print(bytes_utf8)

Este código producirá el siguiente resultado:

b'Hola, mundo!'

La función encode() devuelve una tupla de dos elementos: el texto codificado y la longitud del texto codificado.

Decodificación de texto en UTF-8

Para decodificar texto en UTF-8, podemos usar la función decode() del módulo codecs. Esta función toma dos argumentos: el texto a decodificar y la codificación a usar.

Python
import codecs

bytes_utf8 = b"Hola, mundo!"

# Decodifica el texto en UTF-8
texto_utf8 = codecs.decode(bytes_utf8, "utf-8")

print(texto_utf8)

Este código producirá el siguiente resultado:

Hola, mundo!

La función decode() devuelve una cadena de texto.

Ejemplo completo

En este ejemplo, codificamos el texto «Hola, mundo!» en UTF-8 y luego lo decodificamos.

Python
import codecs

texto = "Hola, mundo!"

# Codifica el texto en UTF-8
bytes_utf8 = codecs.encode(texto, "utf-8")

# Decodifica el texto en UTF-8
texto_utf8 = codecs.decode(bytes_utf8, "utf-8")

print(bytes_utf8)
print(texto_utf8)

Este código producirá el siguiente resultado:

b'Hola, mundo!'
Hola, mundo!

Errores de codificación y decodificación

Si el texto a codificar o decodificar no es válido, se producirá un error. Por ejemplo, el siguiente código generará un error de codificación:

Python
import codecs

texto = "Hola, mundo!¡"

# Codifica el texto en UTF-8
bytes_utf8 = codecs.encode(texto, "utf-8")

print(bytes_utf8)

Este código producirá el siguiente error:

UnicodeEncodeError: 'utf-8' codec can't encode character '\ufffd' in position 9: invalid start byte

Manejo de errores

Podemos manejar los errores de codificación y decodificación usando la opción errors de las funciones encode() y decode(). La opción errors especifica cómo se deben manejar los errores.

Los valores posibles para errors son:

  • strict: genera una excepción si se produce un error.
  • ignore: ignora los caracteres no válidos.
  • replace: reemplaza los caracteres no válidos con un marcador de sustitución.
  • backslashreplace: reemplaza los caracteres no válidos con una secuencia de escape.

Por ejemplo, el siguiente código genera un error de codificación, pero el error se maneja usando la opción errors="ignore".

Python
import codecs

texto = "Hola, mundo!¡"

# Codifica el texto en UTF-8
bytes_utf8 = codecs.encode(texto, "utf-8", errors="ignore")

print(bytes_utf8)

Este código producirá el siguiente resultado:

b'Hola, mundo!'

Conclusión

En este tutorial, aprendimos a codificar y decodificar texto en UTF-8 en Python.