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.