🔧 Como Corrigir Problemas de Codificação de Caracteres Corrompidos no WordPress (Ex: “Decoração”)

Se você restaurou seu site WordPress e encontrou palavras como “Decoração” no lugar de “Decoração”, fique tranquilo: o conteúdo não está perdido, e a solução existe.

Este guia cobre todas as etapas, desde correções simples até soluções técnicas definitivas, para qualquer pessoa — com ou sem experiência com banco de dados.


🧠 O que está acontecendo?

Esse erro acontece quando o conteúdo salvo originalmente em UTF-8 (correto) é interpretado como Latin1 (ISO-8859-1) — causando a exibição errada de acentos e caracteres especiais.

Por exemplo:

  • Correto: Decoração
  • Corrompido: Decoração

🔍 Causas comuns

  • Migração ou restauração de site com charset incorreto
  • Plugin de backup/migração (ex: WPvivid, Duplicator, All-in-One WP Migration)
  • Exportação/importação de banco de dados via phpMyAdmin sem definir charset
  • Configuração incorreta no wp-config.php

✅ Soluções passo a passo


🔹 Etapa 1 – Verificar wp-config.php

Acesse o arquivo wp-config.php e verifique estas linhas:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

Ou, se estiver usando emojis e caracteres modernos, pode usar:

define('DB_CHARSET', 'utf8mb4');

⚠️ Evite latin1 aqui, pois isso é o que costuma causar problemas de codificação.


🔹 Etapa 2 – Verificar charset das tabelas no banco

Acesse o phpMyAdmin, vá até o seu banco e veja a coluna “Collation”.

O ideal é que todas as tabelas estejam com:

  • utf8_general_ci
  • ou utf8mb4_general_ci

Se estiverem com latin1_swedish_ci ou outras variações de latin1, as chances de erro aumentam.


🔹 Etapa 3 – Reimportar backup corretamente (se ainda tiver)

Se você ainda tiver o arquivo .sql do banco de dados, faça o seguinte:

  1. Abra o arquivo em um editor de texto (ex: VS Code, Notepad++)
  2. Localize uma linha como: sqlCopiarEditarSET NAMES latin1; ✅ Altere para: sqlCopiarEditarSET NAMES utf8;
  3. Salve o arquivo como UTF-8 sem BOM
  4. Reimporte no phpMyAdmin e defina o charset como utf8 no momento da importação

🔹 Etapa 4 – Corrigir um banco já corrompido

Se os dados já estão salvos de forma corrompida, ou seja, o banco contém “Decoração” diretamente, siga esta solução definitiva:


🛠️ Solução definitiva via SQL (avançado, mas eficaz)

🔄 Corrigir campos com texto corrompido:

Este SQL reconverte os textos mal interpretados de volta ao UTF-8 correto:

UPDATE wp_posts
SET post_title = CONVERT(CAST(CONVERT(post_title USING latin1) AS BINARY) USING utf8),
post_content = CONVERT(CAST(CONVERT(post_content USING latin1) AS BINARY) USING utf8);

⚠️ Substitua wp_ pelo prefixo do seu banco de dados (ex: wp9g_, wp_, meusite_, etc.)


🧩 Correção completa (várias tabelas)

Use este script SQL para corrigir todas as tabelas padrão do WordPress:

-- wp_posts
UPDATE wp_posts
SET post_title = CONVERT(CAST(CONVERT(post_title USING latin1) AS BINARY) USING utf8),
post_content = CONVERT(CAST(CONVERT(post_content USING latin1) AS BINARY) USING utf8),
post_excerpt = CONVERT(CAST(CONVERT(post_excerpt USING latin1) AS BINARY) USING utf8),
post_content_filtered = CONVERT(CAST(CONVERT(post_content_filtered USING latin1) AS BINARY) USING utf8);

-- wp_postmeta
UPDATE wp_postmeta
SET meta_value = CONVERT(CAST(CONVERT(meta_value USING latin1) AS BINARY) USING utf8)
WHERE meta_value LIKE '%Ã%';

-- wp_terms
UPDATE wp_terms
SET name = CONVERT(CAST(CONVERT(name USING latin1) AS BINARY) USING utf8),
slug = CONVERT(CAST(CONVERT(slug USING latin1) AS BINARY) USING utf8);

-- wp_term_taxonomy
UPDATE wp_term_taxonomy
SET description = CONVERT(CAST(CONVERT(description USING latin1) AS BINARY) USING utf8)
WHERE description LIKE '%Ã%';

-- wp_termmeta
UPDATE wp_termmeta
SET meta_value = CONVERT(CAST(CONVERT(meta_value USING latin1) AS BINARY) USING utf8)
WHERE meta_value LIKE '%Ã%';

-- wp_options
UPDATE wp_options
SET option_value = CONVERT(CAST(CONVERT(option_value USING latin1) AS BINARY) USING utf8)
WHERE option_value LIKE '%Ã%';

-- wp_users
UPDATE wp_users
SET display_name = CONVERT(CAST(CONVERT(display_name USING latin1) AS BINARY) USING utf8),
user_nicename = CONVERT(CAST(CONVERT(user_nicename USING latin1) AS BINARY) USING utf8);

-- wp_usermeta
UPDATE wp_usermeta
SET meta_value = CONVERT(CAST(CONVERT(meta_value USING latin1) AS BINARY) USING utf8)
WHERE meta_value LIKE '%Ã%';

-- wp_comments
UPDATE wp_comments
SET comment_content = CONVERT(CAST(CONVERT(comment_content USING latin1) AS BINARY) USING utf8),
comment_author = CONVERT(CAST(CONVERT(comment_author USING latin1) AS BINARY) USING utf8);

-- wp_commentmeta
UPDATE wp_commentmeta
SET meta_value = CONVERT(CAST(CONVERT(meta_value USING latin1) AS BINARY) USING utf8)
WHERE meta_value LIKE '%Ã%';

🧪 Testar antes de aplicar (opcional, recomendado)

SELECT post_title,
CONVERT(CAST(CONVERT(post_title USING latin1) AS BINARY) USING utf8) AS corrigido
FROM wp_posts
WHERE post_title LIKE '%Ã%';

✅ Conclusão

Erros como “Decoração” podem parecer sérios, mas geralmente são reversíveis. O segredo está em entender que:

  • O conteúdo está salvo corretamente, mas foi mal interpretado
  • Reverter a má codificação é possível com SQL ou ferramentas específicas
  • Backups são essenciais antes de qualquer operação

💡 Dica extra

Depois da correção, verifique os plugins de migração/restauração que você usa. Certifique-se de que:

  • Eles exportam com charset UTF-8
  • Você reimporta com charset correto (no phpMyAdmin ou via script)

Se este artigo ajudou, compartilhe com outros usuários que enfrentam esse problema — é mais comum do que parece, e quase sempre tem solução!

Deixe uma resposta