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
- Acesse o seu cPanel e entre em phpMyAdmin (procure o ícone na área de "Banco de dados").
- Selecione o banco de dados do seu site na lista à esquerda.
- Clique na aba "Operações" (ou "Operations") do banco — ali você verá o charset/collation atual do banco inteiro.
- 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.
Passo 2: padronize o banco de dados para utf8mb4
- Ainda no phpMyAdmin, com o banco selecionado, vá na aba "Operações".
- Procure o campo de "Collation" do banco e altere para utf8mb4_unicode_ci.
- 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');edefine('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
- Limpe o cache do seu site (se usar plugin de cache) e o cache do seu navegador.
- Abra o site em uma aba anônima/privativa para garantir que está vendo a versão mais atual.
- 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! 🌸