¿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.
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.
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ó.
测试
UTF-8 → GBK
娴å¬ç˜¯
Windows-1252 / Latin-1 → UTF-8
测试
Windows-1252 / Latin-1 → GBK
测试
Windows-1251 → GBK
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 |
Creada y verificada por el equipo de ingeniería de Go Tools.
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.
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.
No recuperable No. Esos bytes se descartaron al decodificar. Recupera lo que puedas del texto circundante y vuelve al origen para el resto.
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.
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 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.
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.
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.
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.
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.
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.
娴嬭瘯
测试
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.
测试
测试
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.
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.
鏁版嵁搴�
(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.
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.
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.
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.
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.
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.
iconv -f UTF-8 -t GBK correct.txt > broken.txt
# Confirma primero la codificación actual file -I correct.txt # charset=utf-8 → nada que convertir
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.
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
-- 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;
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.
// Tomar el primer candidato diga lo que diga la insignia db.update(row.id, candidates[0].text);
// Escribe de vuelta solo lo que supera la ida y vuelta if (candidates[0].lossless) db.update(row.id, candidates[0].text);
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.
text = raw.decode('utf-8').encode('gbk').decode('utf-8') # 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() VARCHAR(50) en un error de truncamiento.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.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.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.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. 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. 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. 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. Codificación y Formato
La tabla ASCII completa: 128 caracteres en decimal, hexadecimal, octal y binario, más un convertidor texto ↔ ASCII. Cada carácter de control trae su secuencia de escape, su notación caret y dónde te lo encuentras.
Codificación y Formato
Decodifica y codifica Base64 online de forma gratuita. Conversión en tiempo real con soporte completo de UTF-8 y emojis. 100% privado — funciona en tu navegador. Sin registro.
Codificación y Formato
Decodifica una cadena Base64 o data URI de vuelta a una imagen en tu navegador. Previsualiza, lee dimensiones y MIME, luego descarga como PNG, JPG, GIF, SVG. Sin subir.
Codificación y Formato
Convierte CSV a JSON en tu navegador. RFC 4180, inferencia de tipos, fila de cabecera, seguro para big-int. 100% privado, sin carga.
Codificación y Formato
Pega un archivo .env y obtén JSON al instante. Tus contraseñas, claves API y tokens nunca salen del navegador: 100% privado, sin subidas, gratis.
Codificación y Formato
Decodifica entidades HTML y desescapa HTML online: gratis, sin registro, 100 % en tu navegador. Convierte referencias nombradas, decimales y hex de vuelta en caracteres; nunca se sube.