Problemas de Caracteres estranhos MySQL

caracteres acentuados mysql

Um dos problemas mais comuns com relação em site é o de caracteres que contém acentuação, se configurado incorretamente as configurações de COLLATION e SCHEMA, no momento de você inserir os dados no banco de dados, os caracteres com acentuação podem ser gravados da seguinte maneira:

Fábio

Note que no nome Fábio, o caracter á não foi gravado corretamente.

Um forma simples e prática de resolver o problema, é forçar o  o mysql_connect resgatar ou gravar as informações na codificação UTF-8.

Para isso, basta usar o seguinte código:

mysql_set_charset('utf8',$conexao);

Veja um exemplo completo:

$banco = 'localhost';
$usuario = 'usuario';
$senha = '123456';

//ABRE A CONEXÃO
$conexao = mysql_connect($banco,$usuario,$senha);
mysql_set_charset('utf8',$conexao);
//DAQUI PARA BAIXO, O RESTANTE DO CÓDIGO ....

Na maioria dos casos, usando mysql_set_charset(‘utf8’,$conexao) o problema é resolvido.

Importante!

Para esse exemplo as páginas estão configuradas com  charset=”utf-8″

No Banco de Dados o SCHEMA E COLLATION está como latin 1 Default Collation

 

Cannot resolve the collation conflict between

Umas das formas de resolver esse problema:
1 – Descubra o Collation padrão do BD

Select ServerProperty('Collation')

Collation padrão é: COLLATE Latin1_General_CI_AS

2 – Na clausula WHERE, apos menção do campo, insira o COLLATION padrão, ex:

select colunaX, colunaY from tabela_01 t1
join tabela_02 t2 on t1.codigo = t2.codigo
where t1.nome COLLATE Latin1_General_CI_AS = t2.nome COLLATE Latin1_General_CI_AS