Skip to content
Empieza gratis

¿Cómo se convierte "Mérida" en "Mérida"?

Sigue los bytes de una palabra de un programa a otro, reconoce los dos tipos de acento roto y repara una columna que ya llegó así.

Curso gratis. Tu Maestro, una IA, .

Ya sabes que "Mérida" guardada en UTF-8 son siete bytes: 4D C3 A9 72 69 64 61. Cinco son letras sin acento y dos, C3 A9, son la é. Ahora sigue esos bytes cuando otro programa abre el archivo.

  1. Alguien escribe Mérida

    en el sistema de pedidos

  2. Se guarda en UTF-8

    4D C3 A9 72 69 64 61

  3. Otro programa abre el archivo

    • Camino 1 de 2: lo lee como UTF-8

      1. Ves Mérida

        C3 A9 se leen juntos: é

      Aquí termina.

    • Camino 2 de 2: lo lee como Windows-1252

      1. Ves Mérida

        C3 se lee à y A9 se lee ©

      Aquí termina.

Los bytes son los mismos en los dos caminos; cambia la tabla con que se leen.

Windows-1252 da un byte a cada letra, así que lee C3 como una letra (Ã) y A9 como otra (©). La é se convierte en dos caracteres, y el primero casi siempre es una Ã. Esto tiene nombre: mojibake, el texto que sale cuando se leen bytes con la tabla equivocada. Así se ven algunas ciudades de los clientes de El Nopal cuando un archivo en UTF-8 se lee como Windows-1252 (lo corrimos en Python):

Se escribióSe lee
QuerétaroQuerétaro
LeónLeón
MazatlánMazatlán
Tlajomulco de ZúñigaTlajomulco de Zúñiga
Miscelánea El GüeroMiscelánea El Güero

El patrón es tan regular que se reconoce de lejos: una secuencia como é es compatible con UTF-8 leído como Windows-1252 o Latin-1. Es una pista para comprobar, no una identificación única de la codificación.

El camino al revés

Ahora el caso contrario: el sistema viejo de una sucursal guarda en Windows-1252, y lo abre un programa que espera UTF-8. La é es un solo byte, E9, y en UTF-8 ese byte suelto no forma ninguna letra válida. El programa tiene dos salidas: detenerse con un error, o poner en su lugar el signo de reemplazo, �, y seguir. Así queda "M�rida".

Ese rombo con signo de interrogación es peor noticia que la Ã. El programa ya tiró el byte que no entendió, así que desde ese texto no hay forma de saber qué letra era. La reparación es volver al archivo original y leerlo con la codificación correcta. pandas, por ejemplo, elige la primera salida: se detiene. Predice qué pasa:

pandas abre un archivo del sistema viejo

Ejemplo 1 de 2

example.py
import pandas as pd# Así guarda el archivo el sistema viejo de la sucursal: en Windows-1252.with open("clientes.csv", "w", encoding="cp1252") as archivo:    archivo.write("cliente,ciudad\nPapelería La Única,Mérida\nMiscelánea El Güero,León\n")print(pd.read_csv("clientes.csv"))

Adivinar está bien. Lo que escribas se queda en este navegador y te espera en tu curso.

Ejemplo 2 de 2, se abre cuando expliques este

Cuando el texto ya llegó roto

A veces no tienes el archivo original. Contabilidad abrió el CSV en Excel, vio "Mérida", y lo guardó así; ahora el texto roto es el contenido. Si confirmas esa cadena de conversiones y no se perdieron bytes, puedes intentar deshacerla. Una à por sí sola no garantiza que esta receta sea la correcta. Sigue el razonamiento paso a paso; intenta cada paso antes de abrirlo.

Reparar un nombre que llegó como Miscelánea El Güero

Ejemplo resuelto · 4 pasos

En la columna cliente del reporte de contabilidad aparece "Miscelánea El Güero". No tienes el archivo original. ¿Cómo recuperas el nombre sin reescribirlo a mano?

Piensa el siguiente paso por tu cuenta y luego ábrelo para comparar.

Inténtalo

Ahora la columna completa. Cambia una sola línea para que cada nombre salga reparado. Si no sabes qué línea cambiar, pídele una pista a tu Maestro.

La columna de este ejercicio contiene solo ejemplos con la misma conversión conocida. En una columna mixta, separa y revisa los casos antes de aplicar la reparación; conserva siempre el original.

Tu turno

Estos son los clientes del reporte de contabilidad, tal como llegaron. Cambia la línea de reparado para que cada nombre salga bien escrito. Ya quedó cuando se imprimen Papelería La Única, Miscelánea El Güero, Abarrotes Doña Peña y Farmacia San José.

Error común: Reparar es el último recurso

Si tienes el archivo original, no repares texto: léelo con la codificación correcta (encoding="utf-8" o encoding="cp1252"). Reparar sirve para lo que ya alguien guardó roto, y solo una vez por texto.

Un vistazo para decidir

Los dos síntomas de esta página se reconocen de lejos, y cada uno pide algo distinto:

Lo que vesQué pudo pasarQué compruebas
à junto a otra letra (é, ó)UTF-8 pudo leerse como Windows-1252 o Latin-1Lo lees de nuevo con encoding="utf-8"; si ya está guardado así, lo reparas con encode("cp1252").decode("utf-8")
� donde iba la letraUna conversión reemplazó bytes que no pudo interpretar; el símbolo no identifica la codificación originalVuelves al archivo original y confirmas su codificación antes de leerlo
UnicodeDecodeError al leerUn programa que espera UTF-8 se topó con bytes que no lo sonConsultas el origen; si indica Windows-1252, pruebas encoding="cp1252" y verificas varios nombres y símbolos

Una advertencia honesta: la reparación no siempre se puede. La Í en UTF-8 son los bytes C3 8D, y en el entorno de práctica "Í".encode("utf-8").decode("cp1252") falla, porque Windows-1252 deja sin definir el byte 8D. Si te topas con un nombre así, la salida es la de siempre: volver al archivo original. Si no sabes en cuál de los tres casos estás, pégale a tu Maestro lo que ves.

Comprueba lo que sabes: En el reporte de una sucursal aparece "Le�n", con un rombo y un signo de interrogación. ¿Qué pasó y qué haces?