Banco de dados 34 visualizações

Como configurar o charset e collation corretos no MySQL para evitar problemas com acentuação

Ver no WHMCS
Bem-vindo(a)! Vou te ajudar a entender e resolver de uma vez por todas aquele problema chato de "açã£o" ou "?" no lugar de acentos no seu banco de dados. Vamos com calma, passo a passo. 😊

Por que os acentos "quebram" no MySQL?

Esse problema quase sempre acontece por causa de uma coisa chamada charset (conjunto de caracteres) e collation (regra de ordenação/comparação de texto). Pense assim: o charset é o "alfabeto" que o banco de dados usa para guardar as letras — se ele não conhece o "ã", o "ç" ou o "é", ele salva qualquer coisa no lugar, e é aí que aparecem aqueles símbolos estranhos.

O ideal, hoje em dia, é usar o charset utf8mb4 com a collation utf8mb4_unicode_ci (ou utf8mb4_general_ci). Esse combo entende acentuação, emojis e praticamente qualquer caractere especial que seu site ou sistema precise guardar.

💡 Dica da Sensei: Charsets antigos como latin1 ou utf8 (sem o "mb4") são os principais culpados por bagunçar acentos e não suportam emojis corretamente. Sempre que possível, prefira utf8mb4.

Passo 1: Verifique o charset do seu banco de dados

Antes de mexer em qualquer coisa, vamos dar uma olhada em como o seu banco está configurado hoje.

  1. Acesse o cPanel da sua hospedagem (você recebe o link de acesso e os dados de login por e-mail na entrega da sua hospedagem).
  2. Procure e clique em "Bancos de Dados MySQL", dentro da seção de Banco de Dados.
Tela Bancos de Dados MySQL do cPanel, com opções para criar novo banco e gerenciar usuários

Nessa tela você consegue ver os bancos de dados já existentes na sua conta. Para checar o charset detalhado de cada tabela, o jeito mais fácil é usar o phpMyAdmin (também disponível no cPanel, na mesma seção de banco de dados). Dentro dele:

  1. Clique no nome do seu banco de dados no menu à esquerda.
  2. Vá até a aba "Operações" (ou "Operations").
  3. Procure o campo "Collation" — ali aparece o charset/collation atual do banco inteiro.

Passo 2: Configurando o charset certo em um banco NOVO

Se você ainda vai criar o banco de dados (por exemplo, para instalar um WordPress ou outro sistema), esse é o melhor momento de já começar do jeito certo:

  1. No cPanel, em "Bancos de Dados MySQL", crie o banco normalmente, informando o nome desejado.
  2. Depois de criado, abra o banco pelo phpMyAdmin.
  3. Na aba "Operações", no campo "Collation", selecione utf8mb4_unicode_ci.
  4. Clique em "Executar" (ou "Go") para salvar.

Assim, toda tabela nova criada dentro desse banco já vai herdar o charset correto automaticamente. 🎉

Passo 3: Corrigindo um banco JÁ existente (que está com acentos quebrados)

Se o problema já apareceu em um banco que está em uso, calma — dá pra corrigir. Mas atenção: faça um backup antes de qualquer alteração, sempre que for mexer na estrutura do banco.

  1. No cPanel, acesse "Backup" e gere um backup do banco de dados envolvido antes de continuar.
  2. Abra o phpMyAdmin e selecione o banco de dados.
  3. Marque a caixinha "Selecionar tudo" para escolher todas as tabelas.
  4. No menu suspenso que aparece embaixo da lista de tabelas, escolha a opção "Alterar collation de" (Change collation) e selecione utf8mb4_unicode_ci.
  5. Confirme a alteração.
⚠️ Importante: converter o charset de um banco que já tem dados salvos com acentuação quebrada corrige a estrutura das tabelas, mas não "conserta" magicamente um texto que já foi salvo errado (viraram símbolos estranhos permanentemente). Por isso o backup é essencial: em casos assim, às vezes é preciso restaurar dados de um backup anterior à quebra, ou reintroduzir o conteúdo correto manualmente.

Passo 4: Não esqueça a conexão da sua aplicação

De nada adianta o banco estar certinho em utf8mb4 se o seu site, sistema ou script se conecta a ele usando outro charset. Alguns pontos comuns para revisar:

  • WordPress: no arquivo wp-config.php, confira se a linha DB_CHARSET está definida como utf8mb4.
  • Scripts PHP próprios: ao abrir a conexão com o banco (mysqli ou PDO), defina explicitamente o charset da conexão como utf8mb4.
  • Formulários HTML: confira se as páginas do seu site declaram <meta charset="utf-8"> no cabeçalho.

Resumo rápido

  • Use sempre utf8mb4 como charset e utf8mb4_unicode_ci como collation.
  • Configure isso já na criação do banco, sempre que possível.
  • Ao corrigir um banco existente, faça backup antes.
  • Confira também o charset usado na conexão da sua aplicação (não só no banco).

Se depois de seguir esses passos os acentos continuarem aparecendo errados, ou se você tiver dúvidas na hora de mexer no phpMyAdmin, é só abrir um chamado pelo painel.gehost.com.br que a equipe te ajuda a revisar com calma. Você não está sozinho(a) nessa! 🌱

Precisa de Ajuda?

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