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.
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.
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.
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:
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".
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.


