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! Eu sou a Sensei da GeHost 🎓 e vou te ajudar a resolver um dos probleminhas mais comuns (e mais assustadores à primeira vista) em sites com banco de dados: aquele texto cheio de símbolos estranhos no lugar dos acentos, tipo "informa√ß√£o" ou "Ol├í" em vez de "informação" ou "Olá".

Calma, isso quase sempre é um problema de collation (também chamada de "ordenação de caracteres") — uma configuração do MySQL que define como o banco entende e organiza os caracteres, incluindo acentos e caracteres especiais do português. Vamos resolver juntos, passo a passo. 😊

Por que isso acontece?

Isso costuma acontecer quando existe uma divergência de codificação em algum ponto da cadeia: o site salva o texto em um padrão (por exemplo, UTF-8), mas o banco de dados, a tabela ou a coluna estão configurados com uma collation diferente (por exemplo, latin1). O resultado é esse "quebra-cabeça" de símbolos no lugar das letras acentuadas.

Dica da Sensei: antes de mexer em qualquer coisa, faça um backup do seu banco de dados. Isso te dá segurança total para testar a correção sem medo de perder informação. No cPanel, vá até a área de Backup e gere um backup do banco de dados específico.
Tela de Backup do cPanel com opções de backup completo e parcial de banco de dados

Passo 1: identifique a collation atual do seu banco

  1. Acesse o cPanel da sua hospedagem.
  2. Procure a seção Bancos de Dados MySQL ou abra o phpMyAdmin (também disponível no cPanel).
  3. No phpMyAdmin, clique no nome do seu banco de dados no menu lateral.
  4. Clique na aba Operações. Lá você verá o campo Collation, mostrando a configuração atual (por exemplo, latin1_swedish_ci ou utf8_general_ci).
Tela de Bancos de Dados MySQL no cPanel, com opções de criar e gerenciar bancos

Passo 2: ajuste a collation para o padrão correto

O ideal hoje em dia é usar utf8mb4_unicode_ci (ou utf8mb4_general_ci), pois além de suportar acentos e caracteres especiais do português, também suporta emojis e outros símbolos modernos.

  1. Ainda na aba Operações do phpMyAdmin, no campo Collation, selecione utf8mb4_unicode_ci.
  2. Clique em Executar (ou "Go") para aplicar a mudança em todo o banco.
  3. Repita o processo tabela por tabela: clique em cada tabela, vá em "Operações" (ou "Estrutura" → "Alterar collation") e aplique a mesma collation.
  4. Se necessário, ajuste também coluna por coluna (principalmente as colunas do tipo texto: VARCHAR, TEXT, etc.), pois cada coluna pode ter sua própria collation configurada.
Dica da Sensei: se o seu site usa WordPress, Joomla ou outro CMS, muitos deles têm um arquivo de configuração (como o wp-config.php) onde é possível definir DB_CHARSET como utf8mb4. Vale conferir se está alinhado com a collation do banco.

Passo 3: e se o texto já estiver "quebrado" (aqueles símbolos estranhos)?

Aqui vai um ponto importante: ajustar a collation corrige a configuração daqui pra frente, mas se os dados já foram salvos incorretamente no banco, apenas trocar a collation não conserta o texto que já está lá — porque o problema já aconteceu no momento da gravação.

Nesses casos, existem duas situações comuns:

  • O texto está "duplamente convertido" (mojibake): geralmente é possível reverter com funções de conversão de charset dentro de uma consulta SQL, mas esse processo exige cuidado, pois um comando incorreto pode piorar a situação em vez de corrigir.
  • O texto foi salvo com a collation errada, mas sem duplicação: muitas vezes basta exportar os dados, ajustar o charset da exportação e reimportar já com a collation correta.
Dica da Sensei: se você não tem familiaridade com comandos SQL, esse é o tipo de correção que vale a pena pedir ajuda ao nosso suporte. Mexer direto nos dados sem experiência pode gerar perdas irreversíveis — e é exatamente pra isso que estamos aqui! 💛

Passo 4: confirme que o site está enviando UTF-8 corretamente

Para evitar que o problema volte a acontecer, verifique também:

  1. Se as páginas do seu site declaram <meta charset="UTF-8"> no HTML.
  2. Se a conexão do seu sistema com o banco de dados está configurada para usar utf8mb4 (isso geralmente fica no arquivo de configuração da aplicação/CMS).
  3. Se todas as tabelas e colunas envolvidas no seu sistema estão com a mesma collation — misturar collations diferentes dentro do mesmo banco é uma causa muito comum de erro.

Resumindo

Problemas de acentuação quase sempre têm uma origem simples: uma divergência entre a collation do banco/tabela/coluna e a codificação usada pelo seu site. Ajustando tudo para utf8mb4_unicode_ci de forma consistente, o problema tende a não voltar mais.

Ficou com dúvida em algum passo? Fale com o suporte da GeHost pelo painel do cliente. A gente te ajuda a fazer essa correção com tranquilidade, sem risco pros seus dados. 🌸
Precisa de Ajuda?

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