Problemas de acentuação no MySQL, como resolver o problema

  • Quem nunca teve dor de cabeça com CharSet no MySQL?

Bom estes problemas são facilmente resolvidos, mas o erro fundamental é a má arquitetura e planejamento do sistema a ser construído!
É muito comum você procurar no Google ou no Yahoo e encontrar tópicos em fóruns com pessoas desesperadas, pois migram de servidor ou simplesmente começam a aparecer caracteres incorretos em seus sistemas. O MySQL por ser um banco de dados que trabalha com diferentes sistemas operacionais é suscetível a configurações diversas, e uma delas convenientemente é os parâmetros de char collection.
Lembrando que estas modificações somente são recomendadas se seu sistema estiver cobertos por elas.

  • Verificando suas configurações
SHOW VARIABLES LIKE 'character%';

Execute este comando:

Provavelmente você verá

character_set_client           utf8
character_set_connection       utf8
character_set_database         latin1
character_set_filesystem       binary
character_set_results          utf8
character_set_server           latin1
character_set_system           utf8
character_sets_dir             /usr/share/mysql/charsets/

Podemos verificar que existem vários passos entre a chamada da aplicação á nosso banco até a devolução da informação requerida.
Em nosso exemplo acima o erro mais comum é a utilização de char collection diferentes entre os processos, ou seja se utilizamos latin1 para o banco e utf8 para nossa conexão ocorrera problemas com nossos caracteres.
para corrigir este problema é recomendado que você utilize a mesma coleção de caracteres, menos a de character_set_filesystem que é fortemente recomendado e padrão o binary.

  • Fazendo as modificações
set character_set_server = utf8;
set character_set_database = utf8;

Bom amigos, minhas recomendações:

Faça backup do banco de dados antes de qualquer alteração.
Nunca modifique as configurações em um banco em produção, é sempre recomendado ter um ambiente de teste.

Fonte: http://blog.ftgoncalves.com

#================UPDATE 07/01/2010===============#
Uma outra forma de resolver o problema da acentuação é inserir o código abaixo logo abaixo de sua conexão PHP:

mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');

#===============UPDATE 18/01/2011================#
Outros problemas de acentuação que podem ser encontrado no html com o php podem serem resolvidos da seguinte forma: Setar no cabeçalho da página PHP o charset, mudando para default iso-8859-1. Assim, não ficarão aparecendo aqueles códigos indesejados em nossas páginas html.

header("Content-Type: text/html; charset=ISO-8859-1",true) ;

Mesmo com todas estas dicas as vezes tem pessoas que continuam com o mesmo problema quando vão fazer um include e os caracteres estranhos aparecem então podemos utilizar uma tag do php para resolver o problema a questão é que este jeito de resolver não é muito pratico mais funciona:

utf8_encode(string);
 utf8_decode(string);

One thought to “Problemas de acentuação no MySQL, como resolver o problema”

Deixe uma resposta para humberto apolinario Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.