Guía Unicode · Actualizada el 20 de octubre de 2026
Unicode en Python
Procesa el texto como str. Codifícalo a bytes para guardarlo o transmitirlo y decodifica con la codificación de origen conocida. Ejecuta los siguientes ejemplos en Python 3.
Obtener puntos de código con ord() y chr()
En Python 3, str representa texto Unicode. ord() recibe un punto de código y devuelve su entero; chr() realiza la operación inversa. Un emoji visible puede contener varios puntos de código.
text = "Aé♥"
print([f"U+{ord(char):04X}" for char in text])
# ['U+0041', 'U+00E9', 'U+2665']
print(chr(0x2665))
# ♥Codificar cadenas y decodificar bytes con UTF-8
encode() convierte texto a bytes y decode() convierte bytes a texto. Usa la codificación real del origen. Por defecto, una entrada no válida genera un error.
text = "café"
data = text.encode("utf-8")
print(data.hex(" "))
# 63 61 66 c3 a9
print(data.decode("utf-8"))
# café
assert data.decode("utf-8") == textDistinguir escapes y texto literal
Python interpreta los escapes Unicode en cadenas normales. Las cadenas raw conservan las barras inversas. Un escape mostrado en una representación no implica que el texto almacenado contenga una barra inversa.
heart = "\u2665"
literal = r"\u2665"
print(heart, len(heart))
# ♥ 1
print(literal, len(literal))
# \u2665 6
assert heart == "♥"Normalizar texto equivalente antes de comparar
Un carácter precompuesto y una letra con marca combinante pueden verse iguales. NFC normaliza secuencias canónicamente equivalentes; no traduce ni elimina acentos.
import unicodedata
composed = "é"
decomposed = "e\u0301"
print(composed == decomposed)
# False
print(unicodedata.normalize("NFC", decomposed) == composed)
# TrueEvita errores habituales de codificación
- Indica encoding="utf-8" para archivos UTF-8 y verifica la codificación de documentos antiguos.
- No uses errors="ignore" como solución general: elimina datos sin avisar. Gestiona los errores explícitamente.
- len() cuenta puntos de código en str, no caracteres visibles. Las marcas combinantes y los emojis pueden incluir varios.
- ASCII no puede codificar todo Unicode. La sustitución y la transliteración cambian el contenido.