🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir erro de charset no banco de dados

Time Full Services Time Full Services
Tipo Banco de dados
Nome do erro Erro de charset no banco de dados EN: Database charset error
Severidade Atenção
Descrição O erro de charset do banco de dados no WordPress aparece quando o conjunto de caracteres da tabela não bate com o que o WordPress envia, fazendo acentos e emojis virarem símbolos como "é" ou "?". Costuma surgir após migrar o site ou importar um dump SQL no charset errado.

O que é o erro de charset do banco de dados?

O charset é o conjunto de caracteres que o banco usa para guardar texto. O WordPress moderno grava em utf8mb4, que cobre acentos, símbolos e emojis de 4 bytes. Quando a tabela está em latin1 ou no antigo utf8 e o site envia dados em utf8mb4, o MySQL grava ou lê os bytes com a codificação errada e o texto se corrompe na tela. Não há perda imediata de conteúdo, mas os caracteres aparecem trocados até que o charset da tabela e da conexão sejam alinhados.

Como identificar

  • Acentos e cedilhas aparecem como “é”, “ã” ou “ç” no site e no painel.
  • Emojis e símbolos somem ou viram um losango com ponto de interrogação “?” depois de salvos.
  • O problema aparece logo após importar um dump SQL antigo ou migrar para outro servidor.
  • Conteúdo digitado agora fica correto, mas posts antigos do banco continuam com caracteres quebrados.
Antes de começar: Exporte o banco antes de converter o charset. Converter tabelas que já guardam texto corrompido pode tornar o erro permanente. O caminho mais seguro é reimportar um dump exportado em utf8mb4 a partir de um backup íntegro.

Como prevenir

  • Mantenha DB_CHARSET como utf8mb4 no wp-config.php e DB_COLLATE vazio
  • Ao migrar, exporte e importe o dump sempre declarando utf8mb4 nas duas pontas
  • Padronize todas as tabelas em utf8mb4 para acentos e emojis serem gravados sem corrupção

Causa

  • Tabelas em latin1 ou utf8 enquanto o WordPress grava em utf8mb4, gravando os bytes com codificação trocada.
  • Dump SQL exportado em um charset e importado em outro, sem declarar a codificação na importação.
  • DB_CHARSET no wp-config.php definido como latin1 ou utf8, em vez de utf8mb4.
  • Conexão do MySQL negociando um charset diferente do charset físico das tabelas.
  • Conteúdo antigo gravado com codificação errada antes da migração, que permanece corrompido no banco.

Como resolver

  1. Faça backup do banco antes de tudo: exporte o banco completo. Conversão de charset reescreve as tabelas e, se feita sobre dados já corrompidos, pode fixar o erro, então o backup permite voltar atrás.
  2. Confira o charset atual das tabelas: no phpMyAdmin (aba SQL), veja o charset de cada tabela para saber quais estão em latin1 ou utf8 e precisam migrar para utf8mb4.
    SELECT TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();
  3. Alinhe o wp-config.php: via FTP, defina DB_CHARSET como utf8mb4 e deixe DB_COLLATE vazio. Isso garante que a conexão do WordPress fale o mesmo charset das tabelas.
  4. Converta as tabelas para utf8mb4: rode o ALTER TABLE ... CONVERT TO em cada tabela em charset antigo. Se o texto já estava corrompido na origem, reimporte um dump exportado corretamente em utf8mb4.
  5. Limpe o cache e revise o conteúdo: limpe o cache de página e de objeto e abra posts antigos. O texto novo já grava certo; posts que ficaram corrompidos antes da migração podem precisar de busca e substituição.
SQL
-- Confere o charset declarado pela conexao atual
SHOW VARIABLES LIKE 'character_set%';

-- Define o padrao do banco para utf8mb4 (vale para tabelas novas)
ALTER DATABASE nome_do_banco CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

-- Converte uma tabela existente e suas colunas de texto para utf8mb4
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Perguntas frequentes

Por que os acentos do meu site viraram é e ã?
Isso é texto utf8mb4 lido como se fosse latin1. A tabela ou a conexão está num charset que não bate com o conteúdo gravado. Alinhar DB_CHARSET para utf8mb4 e converter as tabelas para o mesmo charset corrige a exibição do texto novo.
Qual a diferença entre utf8 e utf8mb4 no WordPress?
O antigo utf8 do MySQL guarda no máximo 3 bytes por caractere e não cobre emojis nem alguns símbolos. O utf8mb4 usa até 4 bytes e suporta tudo. O WordPress moderno adota utf8mb4 por padrão, então é o charset recomendado para o banco.
Converter o charset recupera o texto já corrompido?
Não necessariamente. Se o texto foi gravado com codificação errada antes da migração, a conversão não o restaura sozinha. O caminho seguro é reimportar um dump exportado corretamente em utf8mb4 a partir de um backup íntegro.
Preciso mexer no wp-config.php?
Sim, confirme DB_CHARSET como utf8mb4 e deixe DB_COLLATE vazio. Se o wp-config fala um charset e as tabelas estão em outro, a conexão negocia a codificação errada e o texto continua aparecendo trocado mesmo após converter as tabelas.
O erro de charset pode aparecer só em emojis?
Sim. Se as tabelas estão no antigo utf8 de 3 bytes, acentos comuns funcionam, mas emojis de 4 bytes somem ou viram o losango com interrogação ao salvar. Migrar o banco para utf8mb4 resolve, porque ele suporta caracteres de 4 bytes.
Como confirmo o charset que a conexão está usando?
No phpMyAdmin, abra a aba SQL e rode SHOW VARIABLES LIKE 'character_set%'. A saída mostra o charset do cliente, da conexão e do servidor, permitindo comparar com o charset físico das tabelas e achar a divergência.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes