Skip to content

Conversor de codificación y reparador de mojibake

Pega el texto ilegible y recupera el original. Se prueban y ordenan todas las cadenas de codificación plausibles — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — y se muestra la cadena exacta. Gratis y todo en tu navegador.

Sin rastreo Se ejecuta en el navegador Gratis
Todo se decodifica localmente en tu navegador: el texto que pegas nunca sale de este dispositivo.

Recuperar texto ilegible

Pega el texto ilegible. Se prueban todas las cadenas de codificación plausibles y se ordenan los resultados: no necesitas saber qué codificación lo rompió.

Prueba con estos

Originales más probables

4 candidatos
  1. 测试

    Exacto

    UTF-8 → GBK

  2. 娴嬭瘯

    Exacto

    Windows-1252 / Latin-1 → UTF-8

  3. 测试

    Exacto

    Windows-1252 / Latin-1 → GBK

  4. 测试

    Exacto

    Windows-1251 → GBK

Convertir e inspeccionar codificaciones

Mira el mismo texto como bytes en todas las codificaciones habituales a la vez, útil cuando necesitas saber exactamente qué va a guardar tu base de datos o tu protocolo.

Codificación Bytes Hexadecimal
UTF-8 6 E4 B8 AD E6 96 87
GBK 4 D6 D0 CE C4
GB18030 4 D6 D0 CE C4
Big5 4 A4 A4 A4 E5
Shift_JIS 4 92 86 95 B6
EUC-KR 4 F1 E9 D9 FE

Cada cadena de codificación que se muestra en esta página la produce el mismo motor que ejecuta la página, y la comprobación de ida y vuelta que hay detrás de la insignia Exacto se verifica en la suite de pruebas unitarias contra secuencias de bytes conocidas. — Go Tools Team · Sep 8, 2026

Creada y verificada por el equipo de ingeniería de Go Tools.

Respuestas rápidas

¿Qué codificación convierte 测试 en 娴嬭瘯?

UTF-8 → GBK Bytes UTF-8 leídos como GBK. Los seis bytes UTF-8 (E6 B5 8B E8 AF 95) se reagrupan en tres caracteres GBK.

¿Qué convierte 测试 en 测试?

UTF-8 → Windows-1252 Esos mismos bytes UTF-8 leídos como Windows-1252. Como esa codificación es de un solo byte, cada uno de los seis bytes se convierte en su propio carácter.

¿Se puede recuperar un texto que contiene �?

No recuperable No. Esos bytes se descartaron al decodificar. Recupera lo que puedas del texto circundante y vuelve al origen para el resto.

¿Cuántos bytes ocupa un carácter chino?

3 frente a 2 bytes Tres en UTF-8, dos en GBK y Big5. Esa diferencia es una fuente habitual de truncamiento cuando una columna se dimensiona en bytes en lugar de en caracteres.

¿Qué es el mojibake?

El mojibake es lo que obtienes cuando un texto se escribe con una codificación de caracteres y se lee con otra. Los bytes están intactos; lo único equivocado es la interpretación. Esa distinción es la razón entera de que la recuperación sea posible: si consigues averiguar qué codificación escribió los bytes y cuál los leyó mal, puedes ejecutar el error al revés y recuperar el texto original.

La palabra es japonesa —文字化け, algo así como «transformación de caracteres»— y se convirtió en el término estándar en inglés porque el problema fue endémico en la informática japonesa mucho antes de Unicode. El texto chino, japonés y coreano lo sufre mucho más que el de alfabeto latino, por un motivo estructural: esas lenguas necesitan codificaciones multibyte, y las codificaciones multibyte no se ponen de acuerdo sobre cómo agrupar los bytes. Una cadena en alfabeto latino suele ser ASCII puro, y todas las codificaciones coinciden en el ASCII.

La recuperación falla en una única situación. Cuando un decodificador se topa con bytes que no significan nada en su codificación, no los conserva: los sustituye por U+FFFD y los tira. Esos caracteres se pierden de forma permanente. Todo lo demás es reversible.

// The mistake, in three lines of JavaScript
const bytes = new TextEncoder().encode('测试');   // UTF-8: E6 B5 8B E8 AF 95
new TextDecoder('gbk').decode(bytes);            // '娴嬭瘯'  ← mojibake
new TextDecoder('windows-1252').decode(bytes);   // '测试'  ← same bytes, other mistake

Qué hace esta herramienta

No hace falta conocer la codificación

Pega el texto ilegible y la herramienta enumera las cadenas por ti. Se prueba cada combinación de «escrito como» y «leído como» entre UTF-8, GBK, GB18030, Big5, Shift_JIS, EUC-KR, Windows-1252 y Windows-1251.

Los resultados exactos se verifican, no se adivinan

Un candidato se marca como Exacto solo cuando, al pasarlo de vuelta por la misma cadena, se reproduce tu entrada carácter por carácter. Es una comprobación determinista: una conjetura ordenada no te diría de qué resultados puedes fiarte.

La cadena se muestra, no se esconde

Cada candidato nombra la codificación que escribió los bytes y la que los leyó mal. Eso es lo que necesitas para arreglar el origen, en vez de reparar las mismas cadenas otra vez la semana que viene.

Honesta cuando el texto es irrecuperable

Si la entrada ya contiene caracteres de reemplazo, la herramienta lo dice sin rodeos y marca todos los candidatos como parciales. La información destruida en el momento de decodificar no vuelve, y fingir lo contrario te cuesta la tarde.

Vista de bytes en todas las codificaciones a la vez

Consulta cualquier texto como bytes hexadecimales en todas las codificaciones admitidas, una al lado de otra, y decodifica hexadecimal en crudo en sentido inverso. Útil para dimensionar columnas, leer capturas de paquetes y revisar el contenido de un BLOB.

Nada sale de tu navegador

La decodificación usa el propio TextDecoder del navegador. No hay subida, ni almacenamiento, ni reescritura de la URL, algo que importa porque el texto ilegible suele venir directamente de producción.

Ejemplos resueltos

UTF-8 leído como GBK — el caso clásico

娴嬭瘯
测试

Los dos caracteres chinos se guardaron correctamente como UTF-8 (bytes E6 B5 8B E8 AF 95) y después un programa leyó esos seis bytes como GBK. GBK agrupa los bytes de dos en dos, así que produjo tres caracteres en lugar de dos. Esto es lo que obtienes cuando una aplicación antigua de Windows abre un archivo UTF-8, o cuando la conexión a la base de datos declara el juego de caracteres gbk mientras los datos son UTF-8.

UTF-8 leído como Windows-1252 — la variante occidental

测试
测试

Los mismos bytes, otro error distinto. Windows-1252 es de un solo byte, así que cada uno de los seis bytes UTF-8 se convirtió en su propio carácter. Las lenguas de alfabeto latino se topan constantemente con esta versión: café acaba como café, naïve como naïve. Las señales inconfundibles son Ã, Â, â y signos de puntuación sueltos que aparecen por parejas.

Bytes que ya tienes en hexadecimal

B2 E2 CA D4
测试

A veces no estás mirando texto ilegible, sino un volcado hexadecimal de una captura de paquetes o de una columna BLOB. Pega el hexadecimal en la segunda sección y elige la codificación. B2 E2 CA D4 es 测试 en GBK; esos mismos dos caracteres ocupan seis bytes en UTF-8 (E6 B5 8B E8 AF 95) y no se pueden representar en Windows-1252.

Texto que no se puede recuperar

鏁版嵁搴�
(solo parcial)

数据库 se escribió como UTF-8 y se leyó como GBK, pero el último par de bytes no significaba nada en GBK, así que el decodificador lo sustituyó por U+FFFD. Ese byte ya no existe. La herramienta lo señala en lugar de adivinar en silencio: todavía puedes recuperar 数据 del principio de la cadena, pero el último carácter es irrecuperable y tendrás que volver a los datos de origen.

Cómo usar esta herramienta

  1. 1

    Pega el texto ilegible

    Mételo tal cual: no hace falta identificar antes la codificación. Basta con un fragmento corto; una docena de caracteres suele bastar para fijar la cadena.

  2. 2

    Lee el primer candidato y su insignia

    Exacto significa que la cadena reproduce tu entrada exactamente al recorrerla de vuelta. Parcial significa que no lo hace, así que toma el resultado como una pista.

  3. 3

    Comprueba la cadena de codificación

    Cada candidato indica en qué codificación se escribió realmente el texto y cuál lo leyó mal. Eso te dice qué arreglar aguas arriba, no solo qué decía el texto.

  4. 4

    Inspecciona los bytes si lo necesitas

    La segunda sección muestra cualquier texto como bytes en todas las codificaciones habituales y decodifica hexadecimal en crudo en sentido inverso. Úsala para dimensionar columnas o revisar tramas de protocolo.

Errores que lo empeoran

Convertir texto que en realidad nunca estuvo roto

Si una cadena se muestra correctamente y aun así la conviertes, creas el mojibake que intentabas evitar. Comprueba primero cómo se ve, y ten en cuenta que una fuente que falta se dibuja como cajas (□□□) mientras que un problema de codificación se dibuja como caracteres equivocados.

✗ Incorrecto
iconv -f UTF-8 -t GBK correct.txt > broken.txt
✓ Correcto
# Confirma primero la codificación actual
file -I correct.txt   # charset=utf-8 → nada que convertir

Declarar un juego de caracteres que los datos no tienen

Cambiar el juego de caracteres declarado de una columna MySQL no vuelve a codificar los bytes que contiene. Declarar como utf8 unos datos latin1 hace que el servidor devuelva bytes que no son UTF-8 válido, y el driver los sustituye por U+FFFD, lo que los destruye.

✗ Incorrecto
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
✓ Correcto
-- Pasa por un tipo binario para que los bytes se preserven, no se reinterpreten
ALTER TABLE t MODIFY c VARBINARY(255);
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;

Fiarse de una recuperación parcial

Un candidato marcado como Parcial no superó la ida y vuelta. Es una pista que merece la pena seguir, no una respuesta para pegar de vuelta en tu base de datos. Si nada vuelve como Exacto, lo más probable es que la entrada ya hubiera perdido información: vuelve a los bytes de origen.

✗ Incorrecto
// Tomar el primer candidato diga lo que diga la insignia
db.update(row.id, candidates[0].text);
✓ Correcto
// Escribe de vuelta solo lo que supera la ida y vuelta
if (candidates[0].lossless) db.update(row.id, candidates[0].text);

Dar por hecho que las costumbres de Python 2 siguen valiendo

Llamar a encode sobre algo que ya son bytes, o a decode sobre algo que ya es una cadena, lanza una excepción en Python 3 en lugar de dar en silencio un rodeo por ASCII. Decodifica los bytes una vez, en la frontera, y a partir de ahí trata el texto como texto.

✗ Incorrecto
text = raw.decode('utf-8').encode('gbk').decode('utf-8')
✓ Correcto
# Decodifica una sola vez en la frontera, con la codificación que usa realmente el archivo
with open(path, encoding='gbk') as f:
    text = f.read()

Cuándo la necesitas

Una migración de base de datos produjo basura
Las tablas MySQL heredadas declaradas como latin1 que en realidad guardan bytes UTF-8 son, con diferencia, el origen más frecuente. Pega aquí una fila ilegible para confirmar la cadena real antes de escribir el ALTER TABLE: hacer la conversión en la dirección equivocada convierte un problema recuperable en uno permanente.
Un CSV abierto en Excel muestra disparates
Excel en Windows sigue asumiendo la página de códigos del sistema para los CSV sin BOM, así que las exportaciones en UTF-8 salen como mojibake. Confirma aquí la cadena y vuelve a exportar con BOM, o impórtalo con el asistente de texto indicando la codificación de forma explícita.
Archivos de log de un servicio heredado
Las aplicaciones escritas contra GBK o Shift_JIS generan logs en esas codificaciones, y los agregadores de logs modernos lo leen todo como UTF-8. Pega una línea para recuperarla; y como nada se sube, puedes hacerlo con logs de producción.
Nombres de archivo rotos por un ZIP
El formato ZIP no tiene campo de codificación, así que los archivos creados en un Windows chino o japonés llevan nombres en GBK o Shift_JIS que las herramientas Unix leen como UTF-8. Recupera aquí los nombres reales antes de renombrar nada.
Dimensionar una columna de base de datos
La vista de bytes muestra el mismo texto en todas las codificaciones a la vez. Un carácter chino ocupa 3 bytes en UTF-8 pero 2 en GBK, que es exactamente el tipo de diferencia que convierte un VARCHAR(50) en un error de truncamiento.

Cómo se produce el mojibake

Los bytes sobreviven, el significado no
Codificar asigna bytes a los caracteres; decodificar devuelve los bytes a caracteres. El mojibake es una decodificación con el mapa equivocado. Los bytes nunca se dañaron, y por eso ejecutar al revés la decodificación equivocada recupera el original de forma exacta, siempre que esa decodificación equivocada no descartara nada.
Por qué el texto CJK es el más castigado
El ASCII ocupa 0x00–0x7F y todas las codificaciones habituales coinciden en él, así que el texto en inglés pasa indemne. El chino, el japonés y el coreano necesitan secuencias multibyte, y las codificaciones discrepan sobre cómo agruparlas. UTF-8 usa tres bytes por carácter chino; GBK usa dos. Dale bytes UTF-8 a un decodificador GBK y la agrupación se desplaza, produciendo un número distinto de caracteres distintos.
La prueba de ida y vuelta
Para cada cadena candidata, la herramienta vuelve a codificar el texto recuperado con la primera codificación y lo vuelve a decodificar con la segunda. Si eso reproduce la entrada exactamente, la cadena explica cada carácter y el candidato se marca como Exacto. Los candidatos que no superan la prueba se muestran igualmente, porque una recuperación parcial a menudo identifica el texto aunque no pueda reproducirlo.
De dónde salen las tablas de codificación
Las tablas las aporta el TextDecoder del navegador. Codificar en el sentido contrario es más delicado, porque TextEncoder solo admite UTF-8: por eso la herramienta construye un mapa inverso recorriendo el espacio de bytes y preguntando al decodificador qué significa cada secuencia. Así la correspondencia es siempre coherente con el comportamiento del propio navegador, y no se envía ninguna tabla de consulta a tu dispositivo.
La heurística de ordenación y sus límites
Más allá de la prueba de ida y vuelta, los candidatos se puntúan según cuánto del texto son caracteres chinos frecuentes (aquellos cuyo byte inicial en GBK cae en 0xB0–0xF7), restando penalizaciones por caracteres de reemplazo, katakana de ancho medio y caracteres de control. El katakana de ancho medio es una señal fuerte de Shift_JIS porque el japonés normal casi nunca lo usa. Esto es una heurística: desempata, no establece la verdad.

Cómo evitar que vuelva a pasar

Arregla el origen, no solo la cadena de texto
La cadena de codificación que aparece bajo cada candidato te dice qué componente está mal configurado. Reparar el texto sin corregir el juego de caracteres de la conexión, el lector de archivos o la opción de exportación significa volver a hacerlo mañana con datos nuevos.
Confirma la dirección antes de convertir un archivo entero
Pasa primero una línea representativa por esta página. Convertir en la dirección equivocada puede producir caracteres de reemplazo y, a diferencia del error original, ese paso no es reversible.
Fija la codificación de forma explícita en todas partes
Juego de caracteres de la conexión a la base de datos, Content-Type de HTTP, llamadas de apertura de archivos, exportaciones a CSV. Cada punto que recurre por defecto a «la codificación del sistema» es un punto donde el mismo fallo reaparece cuando el código cambia de máquina.
Prefiere utf8mb4 a utf8 en MySQL
El utf8 de MySQL guarda como mucho tres bytes por carácter, así que los emoji y algunos caracteres chinos poco frecuentes se truncan en silencio. utf8mb4 es UTF-8 de verdad. Este fallo es distinto del mojibake y la herramienta de recuperación no puede ayudar, porque los bytes desaparecieron de verdad.
Conserva los bytes originales hasta verificar el arreglo
Haz una copia antes de convertir nada. Mientras existan los bytes originales, toda decodificación equivocada es reversible; en cuanto se sobrescriben con caracteres de reemplazo, ninguna herramienta de esta página ni de ninguna otra los devuelve.

Preguntas frecuentes

¿Cómo arreglo los caracteres chinos que aparecen como basura?
Pega el texto ilegible en el recuadro de la parte superior de esta página. La herramienta prueba todas las cadenas de codificación plausibles y ordena los resultados, así que no necesitas identificar tú la codificación. En la inmensa mayoría de los casos la respuesta es texto UTF-8 leído como GBK (verás caracteres como 娴嬭瘯) o texto UTF-8 leído como Windows-1252 (verás 测试). Ambos se recuperan de forma exacta.
¿Qué verifica realmente la insignia Exacto?
Ejecuta la recuperación al revés. El texto recuperado se vuelve a codificar con la primera codificación de la cadena y esos bytes se vuelven a decodificar con la segunda. Si el resultado reproduce tu entrada carácter por carácter, la cadena explica por completo lo que pegaste y la insignia dice Exacto. Es una comprobación determinista de ida y vuelta, no una puntuación de parecido, y por eso un resultado Exacto es fiable de una manera que una conjetura ordenada nunca lo es.
¿Por qué hay texto ilegible que no se puede recuperar nunca?
Porque el daño ocurrió antes de que tú lo vieras. Cuando un decodificador se encuentra una secuencia de bytes que no significa nada en su codificación, no conserva los bytes: los sustituye por U+FFFD (se muestra como �) y los descarta. Eso es una pérdida irreversible. Si tu texto contiene �, esos caracteres concretos ya no están, uses la herramienta que uses. Esta página te lo dice en lugar de producir una conjetura con aire de certeza.
¿Qué diferencia hay entre GBK, GB2312 y GB18030?
Son tres generaciones de la misma familia, cada una superconjunto de la anterior. GB2312 (1980) cubre 6.763 caracteres chinos simplificados, suficiente para texto cotidiano. GBK (1995) lo amplía a unos 21.000 caracteres, incluidas las formas tradicionales. GB18030 (2000, obligatorio en China) cubre todo Unicode. Para recuperar mojibake, GBK es casi siempre la elección correcta, porque el software que causó el problema solía estar escrito contra GBK.
¿ISO-8859-1 es lo mismo que Windows-1252?
En los estándares no, pero en cualquier navegador sí. El WHATWG Encoding Standard, que es lo que implementan los navegadores, trata iso-8859-1 y latin1 como etiquetas de windows-1252. Las dos solo difieren en el rango 0x80–0x9F, donde el ISO-8859-1 auténtico tiene caracteres de control y Windows-1252 tiene signos imprimibles como la raya y las comillas tipográficas. Como esos caracteres imprimibles son exactamente los que asoman en el mojibake, Windows-1252 es el más útil de los dos y esta herramienta lo lista una sola vez bajo ambos nombres.
¿Se sube mi texto a algún sitio?
No. Toda la decodificación ocurre en tu navegador con su TextDecoder integrado, y nada se envía por la red, se escribe en almacenamiento ni se añade a la URL. Esto importa más de lo habitual en esta herramienta concreta: el texto ilegible casi siempre viene de un log de producción, de una ficha de cliente o de un volcado de base de datos, es decir, justo lo que no deberías pegar en una herramienta que procesa en el servidor.
¿Puedo convertir un archivo entero y no solo un fragmento?
Esta página trabaja con el texto que pegas. Para archivos completos usa la línea de comandos: iconv -f GBK -t UTF-8 input.txt > output.txt en macOS o Linux, o Get-Content -Encoding Default in.txt | Set-Content -Encoding UTF8 out.txt en PowerShell. Pega antes aquí una línea representativa para averiguar qué codificaciones nombrar en el comando: equivocarse de dirección sobre un archivo entero es como un problema de una línea acaba convertido en uno de mil.
¿Por qué la herramienta muestra varios candidatos en vez de una sola respuesta?
Porque más de una cadena puede producir texto legible, y la herramienta no te lo oculta. Los candidatos se ordenan colocando primero las cadenas autoconsistentes (Exacto) y después por una heurística de legibilidad que premia los caracteres chinos frecuentes y penaliza los caracteres de reemplazo, el katakana de ancho medio y los caracteres de control. La heurística desempata, no dictamina la verdad. Cuando dos candidatos parecen igual de plausibles, la cadena de codificación que figura bajo cada uno te dice cuál encaja con el origen real de tus datos.

Herramientas relacionadas

Ver todas las herramientas →