¿Qué es el mojibake?
El mojibake son caracteres ilegibles que aparecen cuando un texto se guarda con una codificación y se lee con otra. Lo más habitual es que un texto UTF-8 se lea por error como Windows-1252 o ISO-8859-1. Cada byte de un carácter especial aparece entonces como un carácter propio.
Causas habituales
- La conexión a la base de datos usa
latin1aunque los datos estén en UTF-8. - El servidor web envía
charset=ISO-8859-1, pero la página está guardada en UTF-8. - Un programa de correo o de boletines declara una codificación incorrecta.
- Se copia texto entre programas que esperan codificaciones distintas.
- Una web antigua o un WordPress migrado de servidor mezcla datos en Latin-1 y en UTF-8.
Dañado dos veces: ñ
Si un texto ya dañado se vuelve a convertir mal, aparece un mojibake doble: la ñ pasa primero a ñ y después a ñ. Mojibuster también detecta estos niveles y repara hasta tres de una vez.
Para desarrolladores: corregir la causa
- Define
<meta charset="utf-8">en el HTML y envía la cabeceraContent-Type: text/html; charset=utf-8. - Usa
utf8mb4en MySQL y MariaDB para las tablas y la conexión (SET NAMES utf8mb4). - Guarda los archivos de código fuente en UTF-8 sin BOM.
- Convierte el texto una sola vez: en el límite entre tu sistema y el exterior.
Preguntas frecuentes
¿Qué significa el carácter �?
Es el carácter de sustitución U+FFFD. Un programa lo inserta cuando no puede leer un byte. El carácter original se ha perdido; Mojibuster te indica cuántas posiciones están afectadas.
¿Puedo convertir también códigos HTML como ñ?
Sí. Activa la opción Convertir también códigos HTML. Códigos como ñ, ñ y ñ se convierten entonces en caracteres reales.
¿Se guarda mi texto?
No. La reparación se hace en tu navegador. El texto no se envía ni se guarda.
¿Funciona con otros idiomas?
Sí. Mojibuster repara cualquier carácter que se haya leído mal desde UTF-8, por ejemplo acentos portugueses y franceses, diéresis alemanas, emojis o escritura japonesa.