Database 43 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.