sempre Realimentação positiva
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.
1 | SHOW VARIABLES LIKE 'character%'; |
Execute este comando:
Provavelmente você verá
1 2 3 4 5 6 7 8 | 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.
Bom amigos, minhas recomendações:
Espero ter ajudado. Até a proxima.
Residente em São Paulo/SP Brasil, Cursando Engenharia da Computação Na Universidade São Judas Tadeu desenvolvedor de PHP a 5 anos e grande utilizador de CakePHP.
walber
May 21st, 2009 at 3:03 pm
gostei do post, foi de grande ajuda.
Tiago
September 24th, 2009 at 3:49 pm
Faltou dizer COMO que muda a variável character_set_server
É nisso que estou quebrando a cabeça…
Felipe Theodoro
September 24th, 2009 at 4:08 pm
Você seta com o set
set character_set_server = utf8;
Tiago
September 24th, 2009 at 4:14 pm
Aqui nao funciona Felipe. Eu ja tentei esse comando. Ja tentei tanto:
set character_set_server = utf8; quanto
set character_set_server = \’utf8\’;
E nada! =(
Felipe Theodoro
September 24th, 2009 at 4:19 pm
Que cliente você esta usando??? Eu uso o SQLyog (exelente) ou você pode usar o MySQL Query Browser. Não sei se é possivel com o phpmyadmin.
Tiago
September 24th, 2009 at 4:55 pm
Eu uso o MySQL Query Browser. Mas já tentei na linha de comando também. Nada funciona.
Felipe Theodoro
September 25th, 2009 at 3:16 pm
Deixa eu ver se entendi. Você tem uma base que estava configurado com latin1 e depois de inserir os dados eles estão com caracteres errados… E você quer arrumalos setando utf8?
Tiago
September 25th, 2009 at 5:58 pm
Exatamente!
Felipe Theodoro
September 28th, 2009 at 5:48 pm
Problema!!! não tem como você acertar o caracter somente mudando o charset… Estas configurações devem ser feitas no inicio do projeto (Na arquitetura do banco).
Tiago
October 9th, 2009 at 9:53 pm
E como eu construo um banco forçando o charset dele ser UTF-8 para tudo?
Felipe Theodoro
October 13th, 2009 at 10:08 am
você da os sets nas diferentes configurações de charset para utf8 e pronto seu banco vai estar configurado corretamente