- 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);
Amigo, estava com problemas de acentuação a semanas….vc ajudou para C….
Forte abraço amigo, e que Deus te abençõe.
Att,
Humberto