Skip to content

Conversor de Codificação e Corretor de Mojibake

Cole o texto corrompido e recupere o original. Toda cadeia de codificação plausível — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — é testada e ordenada, com a cadeia exata à vista. Grátis, roda no navegador.

Sem rastreamento Roda no navegador Grátis
Tudo é decodificado localmente no seu navegador — o texto colado nunca sai deste dispositivo.

Recuperar texto corrompido

Cole o texto corrompido. Toda cadeia de codificação plausível é testada e os resultados são ordenados — você não precisa saber qual codificação estragou o texto.

Experimente estes

Originais mais prováveis

4 candidatos
  1. 测试

    Exata

    UTF-8 → GBK

  2. 娴嬭瘯

    Exata

    Windows-1252 / Latin-1 → UTF-8

  3. 测试

    Exata

    Windows-1252 / Latin-1 → GBK

  4. 测试

    Exata

    Windows-1251 → GBK

Converter e inspecionar codificações

Veja o mesmo texto como bytes em todas as codificações comuns de uma vez — útil quando você precisa saber exatamente o que o seu banco de dados ou protocolo vai armazenar.

Codificação Bytes Hex
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 cadeia de codificação exibida nesta página é produzida pelo mesmo motor que a página executa, e a verificação de ida e volta por trás do selo Exata é assegurada na suíte de testes unitários contra sequências de bytes conhecidas. — Go Tools Team · Sep 8, 2026

Desenvolvido e verificado pela equipe de engenharia da Go Tools.

Respostas rápidas

What encoding turns 测试 into 娴嬭瘯?

UTF-8 → GBK Bytes UTF-8 lidos como GBK. Os seis bytes UTF-8 (E6 B5 8B E8 AF 95) são reagrupados em três caracteres GBK.

What turns 测试 into 测试?

UTF-8 → Windows-1252 Os mesmos bytes UTF-8 lidos como Windows-1252. Como essa codificação é de byte único, cada um dos seis bytes vira um caractere próprio.

Can text containing � be recovered?

Irrecuperável Não. Aqueles bytes foram descartados na hora da decodificação. Recupere o que der do texto ao redor e volte à origem para o resto.

Quantos bytes tem um caractere chinês?

3 vs 2 bytes Três em UTF-8, dois em GBK e Big5. Essa diferença é uma fonte comum de truncamento quando uma coluna é dimensionada em bytes e não em caracteres.

O que é mojibake?

Mojibake é o que se obtém quando um texto é escrito com uma codificação de caracteres e lido com outra. Os bytes estão intactos; só a interpretação está errada. Essa distinção é a razão inteira de a recuperação ser possível: se você descobre qual codificação escreveu os bytes e qual os leu errado, dá para rodar o engano ao contrário e recuperar o texto original.

A palavra é japonesa — 文字化け, algo como "transformação de caracteres" — e virou o termo padrão também em outras línguas porque o problema era endêmico na computação japonesa muito antes do Unicode. Textos em chinês, japonês e coreano sofrem com isso bem mais do que os de escrita latina, por um motivo estrutural: esses idiomas precisam de codificações multibyte, e as codificações multibyte discordam entre si sobre como agrupar os bytes. Uma string de escrita latina costuma ser ASCII puro, e toda codificação concorda quanto ao ASCII.

A recuperação falha em exatamente uma situação. Quando um decodificador encontra bytes sem significado na sua codificação, ele não os guarda — coloca U+FFFD no lugar e joga os originais fora. Esses caracteres estão perdidos para sempre. Todo o resto é reversível.

// 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

O que esta ferramenta faz

Não é preciso saber a codificação

Cole o texto corrompido e a ferramenta enumera as cadeias por você. Toda combinação de "escrito como" e "lido como" entre UTF-8, GBK, GB18030, Big5, Shift_JIS, EUC-KR, Windows-1252 e Windows-1251 é testada.

Resultados Exata são verificados, não chutados

Um candidato só é marcado como Exata quando levá-lo de volta pela mesma cadeia reproduz a sua entrada caractere por caractere. Isso é uma verificação determinística — um palpite ordenado não diria em quais resultados você pode confiar.

A cadeia fica à mostra, não escondida

Cada candidato nomeia a codificação que escreveu os bytes e a que os leu errado. É disso que você precisa para corrigir a origem, em vez de reparar as mesmas strings de novo na semana que vem.

Honesta sobre texto irrecuperável

Se a entrada já contém caracteres de substituição, a ferramenta diz isso com todas as letras e marca todos os candidatos como parciais. Informação destruída na hora da decodificação não volta, e fingir o contrário desperdiça a sua tarde.

Visão de bytes em todas as codificações de uma vez

Veja qualquer texto como bytes hexadecimais em todas as codificações suportadas, lado a lado, e decodifique hex bruto no sentido inverso. Útil para dimensionar colunas, ler capturas de pacotes e conferir o conteúdo de BLOBs.

Nada sai do seu navegador

A decodificação usa o TextDecoder do próprio navegador. Não há upload, nem armazenamento, nem reescrita de URL — o que importa porque texto corrompido costuma vir direto da produção.

Exemplos resolvidos

UTF-8 lido como GBK — o caso clássico

娴嬭瘯
测试

Os dois caracteres chineses foram gravados corretamente em UTF-8 (bytes E6 B5 8B E8 AF 95) e depois um programa leu esses seis bytes como GBK. O GBK agrupa os bytes de dois em dois, então produziu três caracteres em vez de dois. É o que se obtém quando um arquivo UTF-8 é aberto por um aplicativo Windows legado, ou quando o charset da conexão do banco está definido como gbk enquanto os dados são UTF-8.

UTF-8 lido como Windows-1252 — a variante ocidental

测试
测试

Os mesmos bytes, outro engano. Windows-1252 é de byte único, então cada um dos seis bytes UTF-8 virou um caractere próprio. Os idiomas de escrita latina caem nesta versão o tempo todo: café vira café, naïve vira naïve. Os sinais denunciadores são Ã, Â, â e pontuação avulsa aparecendo aos pares.

Bytes que você já tem em hexadecimal

B2 E2 CA D4
测试

Às vezes você não está olhando para texto corrompido, e sim para um dump hexadecimal vindo de uma captura de pacotes ou de uma coluna BLOB. Cole o hex na segunda seção e escolha a codificação. B2 E2 CA D4 é 测试 em GBK — os mesmos dois caracteres ocupam seis bytes em UTF-8 (E6 B5 8B E8 AF 95) e não podem ser representados em Windows-1252.

Texto que não dá para recuperar

鏁版嵁搴�
(apenas parcial)

数据库 foi gravado em UTF-8 e lido como GBK, mas o último par de bytes não tinha significado em GBK, então o decodificador o substituiu por U+FFFD. Aquele byte se foi. A ferramenta sinaliza isso em vez de chutar em silêncio — você ainda recupera 数据 do início da string, mas o último caractere é irrecuperável e é preciso voltar aos dados de origem.

Como usar esta ferramenta

  1. 1

    Cole o texto corrompido

    Jogue direto na caixa — não precisa identificar a codificação antes. Um fragmento curto basta; uma dúzia de caracteres costuma fixar a cadeia.

  2. 2

    Leia o primeiro candidato e o selo dele

    Exata significa que a cadeia volta à sua entrada sem diferença nenhuma. Parcial significa que não volta, então trate o resultado como pista.

  3. 3

    Confira a cadeia de codificação

    Cada candidato mostra em qual codificação o texto foi realmente escrito e qual o leu errado. Isso diz o que corrigir lá na origem, não só o que o texto dizia.

  4. 4

    Inspecione os bytes se precisar

    A segunda seção mostra qualquer texto como bytes em todas as codificações comuns e decodifica hex bruto no sentido inverso. Use para dimensionar colunas ou conferir quadros de protocolo.

Erros que pioram a situação

Converter texto que nunca esteve quebrado de verdade

Se uma string aparece corretamente e mesmo assim você a converte, cria o mojibake que estava tentando evitar. Confira a exibição primeiro, e note que fonte faltando renderiza como quadrados (□□□), enquanto um problema de codificação renderiza como caracteres errados.

✗ Incorreto
iconv -f UTF-8 -t GBK correct.txt > broken.txt
✓ Correto
# Confirme antes qual é a codificação atual
file -I correct.txt   # charset=utf-8 → nada a converter

Declarar um charset que os dados não têm

Mudar o charset declarado de uma coluna MySQL não recodifica os bytes que ela guarda. Declarar dados latin1 como utf8 faz o servidor devolver bytes que não são UTF-8 válido, e o driver os substitui por U+FFFD — o que os destrói.

✗ Incorreto
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
✓ Correto
-- Passe por um tipo binário para os bytes serem preservados, não reinterpretados
ALTER TABLE t MODIFY c VARBINARY(255);
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;

Confiar numa recuperação parcial

Um candidato marcado como Parcial não fechou a ida e volta. É uma pista que vale seguir, não uma resposta para colar de volta no seu banco de dados. Se nada vier como Exata, a entrada provavelmente já perdeu informação — volte aos bytes de origem.

✗ Incorreto
// Pega o primeiro candidato, diga o selo o que disser
db.update(row.id, candidates[0].text);
✓ Correto
// Só grave de volta o que fecha a ida e volta
if (candidates[0].lossless) db.update(row.id, candidates[0].text);

Supor que os hábitos do Python 2 ainda valem

Chamar encode em algo que já é bytes, ou decode em algo que já é string, levanta exceção no Python 3 em vez de fazer em silêncio uma ida e volta pelo ASCII. Decodifique os bytes uma vez, na fronteira, e daí em diante trate texto como texto.

✗ Incorreto
text = raw.decode('utf-8').encode('gbk').decode('utf-8')
✓ Correto
# Decodifique uma vez na fronteira, com a codificação que o arquivo realmente usa
with open(path, encoding='gbk') as f:
    text = f.read()

Quando você precisa disto

Uma migração de banco de dados gerou lixo
Tabelas MySQL legadas declaradas como latin1 mas contendo bytes UTF-8 são, isoladamente, a origem mais comum. Cole aqui uma linha corrompida para confirmar a cadeia real antes de escrever o ALTER TABLE — rodar a conversão na direção errada transforma um problema recuperável num problema permanente.
Um CSV aberto no Excel mostra bobagem
O Excel no Windows ainda assume a página de código do sistema para arquivos CSV sem BOM, então exportações UTF-8 saem como mojibake. Confirme a cadeia aqui e depois reexporte com BOM ou importe pelo assistente de texto com a codificação definida explicitamente.
Arquivos de log de um serviço legado
Aplicações escritas contra GBK ou Shift_JIS gravam logs nessas codificações, e os agregadores de log modernos leem tudo como UTF-8. Cole uma linha para recuperá-la — e, como nada é enviado para lugar nenhum, você pode fazer isso com logs de produção.
Nomes de arquivo quebrados por um arquivo ZIP
O formato ZIP não tem campo de codificação, então pacotes criados em Windows chinês ou japonês carregam nomes de arquivo em GBK ou Shift_JIS que as ferramentas Unix leem como UTF-8. Recupere os nomes reais aqui antes de renomear qualquer coisa.
Dimensionar uma coluna de banco de dados
A visão de bytes mostra o mesmo texto em todas as codificações de uma vez. Um caractere chinês ocupa 3 bytes em UTF-8 e 2 em GBK, e é exatamente esse tipo de diferença que transforma um VARCHAR(50) num bug de truncamento.

Como o mojibake acontece

Os bytes sobrevivem, o significado não
Codificar mapeia caracteres para bytes; decodificar mapeia bytes de volta. Mojibake é uma decodificação com o mapa errado. Os bytes nunca foram danificados, e é por isso que rodar a decodificação errada ao contrário recupera o original exatamente — desde que a decodificação errada não tenha descartado nada.
Por que o texto CJK sofre mais
O ASCII ocupa 0x00–0x7F e toda codificação comum concorda quanto a ele, então texto em inglês passa ileso. Chinês, japonês e coreano precisam de sequências multibyte, e as codificações discordam sobre como agrupá-las. O UTF-8 usa três bytes por caractere chinês; o GBK usa dois. Entregue bytes UTF-8 a um decodificador GBK e o agrupamento se desloca, produzindo uma quantidade diferente de caracteres diferentes.
O teste de ida e volta
Para cada cadeia candidata, a ferramenta recodifica o texto recuperado com a primeira codificação e o redecodifica com a segunda. Se isso reproduz a entrada exatamente, a cadeia explica cada caractere e o candidato é marcado como Exata. Candidatos que falham no teste continuam sendo exibidos, porque uma recuperação parcial muitas vezes identifica o texto mesmo sem conseguir reproduzi-lo.
De onde vêm as tabelas de codificação
O TextDecoder do navegador fornece as tabelas. Codificar no sentido inverso é mais complicado, porque o TextEncoder só suporta UTF-8 — então a ferramenta constrói um mapa reverso percorrendo o espaço de bytes e perguntando ao decodificador o que cada sequência significa. O mapeamento fica, portanto, sempre coerente com o comportamento do próprio navegador, e nenhuma tabela de consulta é enviada ao seu dispositivo.
A heurística de ordenação e seus limites
Além do teste de ida e volta, os candidatos recebem uma pontuação por quanto do texto é formado por caracteres chineses comuns (aqueles cujo byte-líder GBK cai em 0xB0–0xF7), menos penalidades por caracteres de substituição, katakana de meia largura e caracteres de controle. Katakana de meia largura é um sinal forte de Shift_JIS, porque texto japonês normal quase nunca o usa. Isto é uma heurística: ela desempata, não estabelece a verdade.

Como impedir que aconteça de novo

Corrija a origem, não só a string
A cadeia de codificação mostrada sob cada candidato diz qual componente está mal configurado. Reparar o texto sem corrigir o charset da conexão, o leitor de arquivos ou a configuração de exportação significa fazer tudo de novo amanhã, com dados novos.
Confirme a direção antes de converter um arquivo inteiro
Passe uma linha representativa por esta página primeiro. Converter na direção errada pode produzir caracteres de substituição e, ao contrário do engano original, esse passo não é reversível.
Defina a codificação explicitamente em todo lugar
Charset da conexão do banco, Content-Type do HTTP, chamadas de abertura de arquivo, exportações de CSV. Todo ponto que assume "a codificação do sistema" é um ponto onde o mesmo bug volta quando o código muda de máquina.
Prefira utf8mb4 a utf8 no MySQL
O utf8 do MySQL guarda no máximo três bytes por caractere, então emojis e alguns caracteres chineses mais raros são truncados em silêncio. O utf8mb4 é UTF-8 de verdade. Essa falha é diferente do mojibake e a ferramenta de recuperação não ajuda, porque aí os bytes realmente se foram.
Guarde os bytes originais até verificar a correção
Faça uma cópia antes de converter qualquer coisa. Enquanto os bytes originais existirem, toda decodificação errada é reversível — depois que forem sobrescritos por caracteres de substituição, nenhuma ferramenta desta página nem de lugar nenhum os traz de volta.

Perguntas frequentes

Como corrijo caracteres chineses que aparecem como lixo?
Cole o texto corrompido na caixa no topo desta página. A ferramenta testa toda cadeia de codificação plausível e ordena os resultados, então você não precisa identificar a codificação sozinho. Na esmagadora maioria dos casos a resposta é texto UTF-8 lido como GBK (você verá caracteres como 娴嬭瘯) ou texto UTF-8 lido como Windows-1252 (você verá æµ‹è¯•). Os dois são recuperados exatamente.
O que o selo Exata verifica de fato?
Ele roda a recuperação ao contrário. O texto recuperado é codificado de novo com a primeira codificação da cadeia, e esses bytes são decodificados de novo com a segunda. Se o resultado reproduz a sua entrada caractere por caractere, a cadeia explica por completo o que você colou e o selo diz Exata. É uma verificação determinística de ida e volta, não uma pontuação de semelhança — por isso um resultado Exata é confiável de um jeito que um palpite ordenado nunca é.
Por que alguns textos corrompidos nunca podem ser recuperados?
Porque o estrago aconteceu antes de você ver o texto. Quando um decodificador encontra uma sequência de bytes sem significado na sua codificação, ele não preserva os bytes — coloca U+FFFD (exibido como �) no lugar e os descarta. Isso é com perda e irreversível. Se o seu texto contém �, aqueles caracteres específicos se foram, não importa a ferramenta que você use. Esta página avisa isso em vez de produzir um palpite com cara de certeza.
Qual é a diferença entre GBK, GB2312 e GB18030?
São três gerações da mesma família, cada uma um superconjunto da anterior. O GB2312 (1980) cobre 6.763 caracteres do chinês simplificado — o bastante para texto do dia a dia. O GBK (1995) o estende para cerca de 21.000 caracteres, incluindo formas tradicionais. O GB18030 (2000, obrigatório na China) cobre todo o Unicode. Para recuperar mojibake, GBK é quase sempre a escolha certa, porque o software que causou o problema costumava ser escrito contra o GBK.
ISO-8859-1 é o mesmo que Windows-1252?
Nas normas, não; em todo navegador, sim. O WHATWG Encoding Standard — que é o que os navegadores implementam — trata iso-8859-1 e latin1 como rótulos de windows-1252. Os dois só divergem na faixa 0x80–0x9F, onde o ISO-8859-1 de verdade tem caracteres de controle e o Windows-1252 tem pontuação imprimível, como o travessão e as aspas curvas. Como são justamente esses caracteres imprimíveis que aparecem no mojibake, o Windows-1252 é o mais útil dos dois e esta ferramenta o lista uma única vez sob os dois nomes.
Meu texto é enviado para algum servidor?
Não. Toda a decodificação acontece no seu navegador, usando o TextDecoder embutido nele, e nada é enviado pela rede, gravado em armazenamento ou acrescentado à URL. Isso importa mais do que o normal nesta ferramenta específica: texto corrompido quase sempre vem de um log de produção, de um registro de cliente ou de um dump de banco de dados — exatamente o tipo de coisa que você não deveria colar numa ferramenta que roda no servidor.
Dá para converter um arquivo inteiro, e não só um trecho?
Esta página lida com o texto que você cola. Para arquivos inteiros, use a linha de comando: iconv -f GBK -t UTF-8 input.txt > output.txt no macOS ou no Linux, ou Get-Content -Encoding Default in.txt | Set-Content -Encoding UTF8 out.txt no PowerShell. Cole aqui uma linha representativa primeiro para descobrir quais codificações nomear no comando — errar a direção num arquivo inteiro é como problemas de uma linha viram problemas de mil linhas.
Por que a ferramenta mostra vários candidatos em vez de uma resposta?
Porque mais de uma cadeia pode produzir texto legível, e a ferramenta não esconde isso de você. Os candidatos são ordenados com as cadeias autoconsistentes (Exata) primeiro, depois por uma heurística de legibilidade que premia caracteres chineses comuns e penaliza caracteres de substituição, katakana de meia largura e caracteres de controle. A heurística desempata, não é um oráculo. Quando dois candidatos parecem plausíveis, a cadeia de codificação mostrada sob cada um diz qual deles é coerente com a origem real dos seus dados.

Ferramentas relacionadas

Ver todas as ferramentas →