Central de Ajuda

Guia da Central de Ajuda

Como corrigir acentuação e caracteres estranhos em site, PHP e MySQL

Textos como João, ? ou interrogações no lugar de acentos indicam que bytes foram gravados ou interpretados com codificações diferentes. A correção exige identificar onde ocorreu a conversão: arquivo, cabeçalho HTTP, conexão PHP, tabela, coluna, importação ou navegador.

Não execute conversões em massa sem backup testado. Alterar apenas o charset da tabela não repara bytes já corrompidos e converter duas vezes pode destruir o texto restante.

Use UTF-8 de ponta a ponta

  • arquivos de código e conteúdo salvos em UTF-8;
  • HTML com <meta charset="utf-8"> no início do <head>;
  • resposta HTTP com Content-Type: text/html; charset=UTF-8;
  • conexão do banco configurada para utf8mb4;
  • tabelas/colunas com charset e collation compatíveis.

Diagnóstico

  1. Abra as ferramentas do navegador e confira o cabeçalho Content-Type.
  2. Veja o arquivo em um editor que mostra a codificação real.
  3. Consulte no banco a coluna problemática e compare o valor bruto.
  4. Teste um novo registro com acentos e emoji.
  5. Compare leitura no phpMyAdmin e na aplicação para separar armazenamento de exibição.

PHP e MySQL

Com PDO, declare o charset na conexão e use consultas preparadas:

$pdo = new PDO(
    'mysql:host=localhost;dbname=app;charset=utf8mb4',
    $usuario,
    $senha,
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

Com mysqli, use $mysqli->set_charset('utf8mb4');. Não tente corrigir com funções como utf8_encode() em todas as saídas; além de obsoletas em versões recentes, elas escondem o ponto real da inconsistência.

Charset e collation

utf8mb4 suporta todo o Unicode. A collation define comparação e ordenação, não os bytes em si. Antes de converter uma tabela, valide índices, tamanho de colunas, versão do MySQL/MariaDB e compatibilidade da aplicação. Faça dump, restaure em homologação e compare contagens e amostras.

Importação CSV e migração

Confirme a codificação de origem, delimitador e escape. Excel pode salvar CSV em formatos diferentes; prefira “CSV UTF-8”. Ao migrar, não presuma que o texto declarado como Latin-1 realmente contém Latin-1. Teste nomes, acentos, aspas, símbolos monetários e emoji.

Quando o texto já foi corrompido

Restaure uma cópia confiável ou escreva uma transformação específica depois de analisar os bytes. Execute primeiro em uma cópia, registre linhas afetadas e nunca aplique a mesma conversão mais de uma vez. Se apenas a exibição está errada, corrigir cabeçalho/conexão pode revelar os dados intactos sem regravá-los.

Recursos relacionados

Continue com materiais e serviços relacionados ao tema deste guia.

Este guia resolveu sua dúvida? Seu retorno ajuda a priorizar as próximas revisões.
Atendimento técnico

Não encontrou o resultado esperado?

Abra um chamado e envie a mensagem de erro completa, o domínio ou serviço afetado, o horário do teste e capturas de tela sem senhas.