De onde vem a palavra
Mojibake (文字化け) é japonês: “moji” significa “caractere” e “bake”, “transformação”. Nos anos 90, os computadores japoneses usavam várias codificações ao mesmo tempo – Shift_JIS, EUC-JP e ISO-2022-JP –, e e-mails e sites ilegíveis eram coisa do dia a dia. A palavra pegou e chegou ao inglês. No Brasil e em Portugal, fala-se mais em “caracteres estranhos” ou “acentos errados”.
Como o mojibake acontece
O computador guarda texto como bytes. A codificação define quais bytes representam cada caractere. Em UTF-8, o ç é salvo como os dois bytes C3 A7. Um programa que lê esses bytes como Windows-1252 mostra um caractere por byte: Ã para C3 e § para A7.
Nada se perde nessa etapa – os bytes continuam lá, só são lidos do jeito errado. Por isso o mojibake quase sempre tem conserto: o Mojibuster transforma os caracteres errados de volta em bytes e os lê corretamente.
Mojibake
Informação, coração, pão – R$ 5,00
Corrigido
Informação, coração, pão – R$ 5,00
Mojibake em outros idiomas
- Japonês:
縺薙s縺ォ縺。縺ッem vez deこんにちは– UTF-8 lido como Shift_JIS. Mais na página em japonês. - Chinês:
浣犲ソem vez de你好– UTF-8 lido como GBK. Em chinês, isso se chama 乱码 (luànmǎ, “código caótico”). - Russo:
Приветem vez deПривет– UTF-8 lido como Windows-1251. Os russos chamam isso de “krakozyabry”. - Português, espanhol, francês…:
ç,õou€em vez deç,õou€– a forma mais comum no mundo.
Causas típicas
- O Excel abre um CSV em UTF-8 sem BOM com dois cliques como se fosse ANSI: Excel com acentos errados.
- Uma exportação CSV de loja virtual, ERP ou banco é aberta com a codificação errada: corrigir CSV.
- Um site ou e-mail declara o
charseterrado, ou a conexão com o banco de dados usalatin1: corrigir caracteres UTF-8. - As legendas foram salvas em uma codificação antiga: legendas com acentos errados.
- Um texto já quebrado é convertido de novo – mojibake duplo como
ç.
Dá sempre para corrigir?
Quase sempre, desde que os bytes estejam intactos. Não dá mais quando um programa já substituiu os caracteres por ? ou pelo caractere de substituição � – a informação original se perdeu. O Mojibuster corrige tudo o que é possível, até três níveis de codificação de uma vez, e mostra quantos caracteres foram perdidos.
Como evitar
- Salve os arquivos em UTF-8 – CSV para o Excel como CSV UTF-8 (delimitado por vírgulas), que grava um BOM.
- Declare a codificação:
<meta charset="utf-8">no HTML,utf8mb4no MySQL e no MariaDB. - Converta o texto uma única vez, na fronteira entre dois sistemas.
- Ao importar, escolha a codificação você mesmo em vez de deixar o programa adivinhar.
Perguntas frequentes
Como se pronuncia mojibake?
Mais ou menos “mo-dji-ba-que”, com as quatro sílabas pronunciadas.
Meu arquivo está danificado ou com vírus?
Não. Mojibake é um problema de exibição, não um vírus, e normalmente não há perda de dados. O arquivo só está sendo lido com a codificação errada.
Qual a diferença entre mojibake e �?
Caracteres estranhos como ç ainda contêm os bytes originais e podem ser corrigidos. O símbolo � indica que um programa não conseguiu ler um byte e o substituiu – esse caractere se perdeu.
Meu texto é enviado para algum servidor?
Não. O Mojibuster corrige o texto no seu navegador. Ele não é enviado nem armazenado.