O que é mojibake?
Mojibake são caracteres ilegíveis que surgem quando um texto é salvo com uma codificação e lido com outra. O mais comum é um texto UTF-8 ser lido por engano como Windows-1252 ou ISO-8859-1. Cada byte de um caractere especial aparece então como um caractere próprio.
Causas comuns
- A conexão com o banco de dados usa
latin1, embora os dados estejam em UTF-8. - O servidor web envia
charset=ISO-8859-1, mas a página está salva em UTF-8. - Um programa de e-mail ou de newsletter declara a codificação errada.
- Um site antigo ou um WordPress migrado de servidor mistura dados em Latin-1 e em UTF-8.
- Texto copiado entre programas que esperam codificações diferentes.
Quebrado duas vezes: ç
Se um texto já quebrado é convertido errado mais uma vez, surge o mojibake duplo: ç vira primeiro ç e depois ç. O Mojibuster também reconhece esses níveis e corrige até três de uma vez.
Para desenvolvedores: corrigir a causa
- Defina
<meta charset="utf-8">no HTML e envie o cabeçalhoContent-Type: text/html; charset=utf-8. - Use
utf8mb4no MySQL e no MariaDB para as tabelas e a conexão (SET NAMES utf8mb4). - Salve os arquivos de código-fonte em UTF-8 sem BOM.
- Converta o texto uma única vez: na fronteira entre o seu sistema e o mundo externo.
Perguntas frequentes
O que significa o caractere �?
É o caractere de substituição U+FFFD. Um programa o insere quando não consegue ler um byte. O caractere original se perdeu; o Mojibuster mostra quantas posições foram afetadas.
Posso converter também códigos HTML como ç?
Sim. Ative a opção Converter também códigos HTML. Códigos como ç, ç e ç viram caracteres de verdade.
Meu texto fica salvo em algum lugar?
Não. A correção acontece no seu navegador. O texto não é enviado nem armazenado.
Funciona com outros idiomas?
Sim. O Mojibuster corrige qualquer caractere que tenha sido lido errado a partir de UTF-8, por exemplo acentos em espanhol e francês, tremas do alemão, emojis ou escrita japonesa.