Banco de dados 35 visualizações

Como corrigir problemas de acentuação causados por collation errada no MySQL

Ver no WHMCS

Como corrigir problemas de acentuação causados por collation errada no MySQL

Oi! Aqui é a Sensei da GeHost 👋. Se você chegou até este guia, provavelmente está vendo aquelas palavras estranhas no seu site — tipo "informação" em vez de "informação", ou até uns quadradinhos (□) no lugar de acentos e do "ç". Respira fundo: isso é um dos problemas mais comuns em sites com banco de dados, tem explicação simples e, na grande maioria dos casos, tem solução. Vamos entender juntos o que está acontecendo e como resolver, passo a passo.

Por que isso acontece?

Todo banco de dados MySQL guarda texto usando uma "receita" chamada charset (o alfabeto de caracteres que ele entende) e uma collation (as regras de como comparar e ordenar esse texto). O problema de acentuação praticamente sempre acontece quando existe uma incompatibilidade entre:

  • o charset/collation do banco de dados (ou da tabela/coluna);
  • o charset/collation usado pela conexão do seu site com o banco (definido no arquivo de configuração do sistema, como o wp-config.php do WordPress, por exemplo); e
  • o charset declarado na página HTML que exibe o conteúdo.

É como se três pessoas estivessem se comunicando, cada uma "falando" um alfabeto diferente — a mensagem chega embaralhada. O padrão mais recomendado hoje em dia, e que resolve a esmagadora maioria dos casos, é usar utf8mb4 (com collation utf8mb4_unicode_ci ou utf8mb4_general_ci) em tudo: banco, tabelas, conexão e página.

Dica da Sensei: antes de mexer em qualquer coisa no banco de dados, faça um backup! Alterar collation é uma operação segura na maioria dos casos, mas trabalhar com uma cópia de segurança por perto sempre traz tranquilidade. Você encontra a opção de backup no seu cPanel.

Passo 1: identifique onde está o descompasso

  1. Acesse o seu cPanel e entre em phpMyAdmin (procure o ícone na área de "Banco de dados").
  2. Selecione o banco de dados do seu site na lista à esquerda.
  3. Clique na aba "Operações" (ou "Operations") do banco — ali você verá o charset/collation atual do banco inteiro.
  4. Clique em cada tabela e depois em "Estrutura" para ver o collation de cada coluna de texto (VARCHAR, TEXT, etc.). É comum encontrar tabelas em latin1 misturadas com tabelas em utf8 — esse é o tipo de bagunça que causa o problema.
Tela de Bancos de Dados MySQL no cPanel

Passo 2: padronize o banco de dados para utf8mb4

  1. Ainda no phpMyAdmin, com o banco selecionado, vá na aba "Operações".
  2. Procure o campo de "Collation" do banco e altere para utf8mb4_unicode_ci.
  3. Repita o processo para cada tabela: entre na tabela, vá em "Operações" e altere a collation ali também, marcando a opção de converter as colunas de texto junto (o próprio phpMyAdmin costuma oferecer essa opção quando você muda a collation da tabela).
Atenção especial: se os dados já foram gravados com o charset errado (por exemplo, o "ç" já virou "ç" dentro do banco), simplesmente trocar a collation não conserta o texto que já está corrompido — ela evita que o problema piore daqui pra frente. Corrigir texto já corrompido é uma operação mais delicada e, se for o seu caso, recomendamos abrir um chamado com o suporte antes de fazer alterações em massa, para não arriscar perder informação.

Passo 3: confira a conexão do seu site com o banco

Não adianta só o banco estar certo — o site também precisa "pedir" os dados no charset correto. Alguns exemplos comuns:

  • WordPress: abra o arquivo wp-config.php (pelo Gerenciador de Arquivos do cPanel) e confira se há as linhas define('DB_CHARSET', 'utf8mb4'); e define('DB_COLLATE', '');.
  • Sites feitos "na mão" (PHP puro): logo depois de abrir a conexão com o banco, deve existir um comando como mysqli_set_charset($conexao, "utf8mb4"); (ou o equivalente em PDO/outra linguagem que seu sistema usa).
  • Outros CMS/sistemas: geralmente há um arquivo de configuração parecido — procure por "charset" ou "collation" nele.

Passo 4: confira o charset da página HTML

Por fim, dê uma olhada no código-fonte do site (clique com o botão direito na página → "Ver código-fonte") e confirme se o <head> tem a linha:

<meta charset="utf-8">

Se essa linha estiver ausente ou apontando para outro charset, o navegador pode exibir os acentos errados mesmo com o banco 100% certo.

Passo 5: teste

  1. Limpe o cache do seu site (se usar plugin de cache) e o cache do seu navegador.
  2. Abra o site em uma aba anônima/privativa para garantir que está vendo a versão mais atual.
  3. Digite um texto novo com acentos em algum formulário do site (comentário, cadastro etc.) e veja se ele é salvo e exibido corretamente — isso confirma que a "cadeia completa" (banco → conexão → página) está alinhada.
Dica da Sensei: resolvido o alinhamento de charset/collation, qualquer texto novo salva certinho a partir de agora. Já o texto antigo que ficou corrompido pode precisar de um tratamento específico — não hesite em chamar o suporte pelo painel.gehost.com.br para te ajudar com segurança nesse ponto.

Se em algum passo você tiver dúvida ou não se sentir confortável mexendo direto no banco de dados, pode chamar a gente sem problema — estamos aqui justamente para isso. Um abraço e bons acentos! 🌸

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.