Tagged with " Collation"

Codificação de Caracteres no MySQL e PHP/HTML

Sep 30, 2009 by     7 Comments    Posted under: MySQL

É incrível como o pessoal ainda tem muita dúvida em relação à codificação utilizada em sites e/ou sistemas em PHP que utilizem MySQL como banco de dados. Geralmente ao criar um banco de dados MySQL deixamos as codificações padrão do phpmyadmin. O problema é que mesmo utilizando nas páginas HTML/PHP o UTF-8, os navegadores ainda mostram dados truncados ao se fazer consultas de dados no banco.

Como não poderia ser diferente, há tempos procuro por uma solução que resolva meus problemas em relação a isso e hoje, ao iniciar o desenvolvimento de um novo sistema, me deparei com este problema novamente.

No meu banco de dados, a tabela está com a seguinte configuração:

bd_mysql Bom, a primeira coisa que fiz foi alterar a codificação do firefox que estava também em UTF-8 para ISO-8851-9. Porém isso resolveu o problema com o banco de dados mas me trouxe o mesmo problema com o restante do texto.

A segunda tentativa foi direto ao banco de dados e tentar encontrar outra codificação. Pesquisei no nosso amigo GOOGLE e encontrei posts de outros blogs e fóruns dizendo que a codificação deveria ser essa:

Character set: UTF-8 Unicode
Collation: latin1_general_ci

Fiz essa alteração na tabela envolvida, mas nada resolveu. Foi aí que alterei a minha busca no Google para “codificação mysql php” e encontrei três ótimas referências ao mesmo problema.

No blog do Willian Vieira (http://willianvieira.wordpress.com) o autor sugeriu a seguinte alternativa:

function abreconexao() {
$dbname = "inventario";
$usuario = "inventario";
$password = "123abc";

$id = mysql_connect("localhost", $usuario, $password);
$con = mysql_select_db($dbname, $id);

mysql_query("SET NAMES utf8",$id);
return ($id);
}

Como o sistema não está orientado a objetos, não utilizei essa função, mas sabia que a linha 09 era a minha solução. No sistema, a conexão com o banco de dados está em um arquivo chamado conectadb.php, o qual está incluso no arquivo head.php que, por sua vez, está incluso na página principal do sistema. Sendo assim, teria apenas que adicionar a linha 09 no meu arquivo de conexão, ficando assim:


$host	= "localhost";
$usuario	= "user_banco_sistema";
$senha		= "aaabbb1112222";
$nome_banco	= "banco_sistema";

if (!($conexao = @mysql_connect("$host","$usuario","$senha")))
{

echo "<p align="center">Erro conectando ao MYSQL!</p>";
exit;
}

if (!($nome_banco=@mysql_select_db("$nome_banco",$conexao))) {

echo "<p align="center">Erro selecionando a base de dados<strong> $nome_banco </strong></p>";
exit;
}
mysql_query("SET NAMES utf8",$conexao);
?>

E…. EUREKAAAA!!!! Tudo certo com a codificação. Claro que voltei ao normal as configurações da tabela do banco de dados e também do firefox. Para quem quiser dar uma olhada, os blogs que encontrei a referência são estes:

>> Willian Vieira – http://willianvieira.wordpress.com/2008/09/18/codificao-utf-8-em-mysql-e-php-2/

>> Alberane Lúcio – http://alberane.wordpress.com/2008/02/14/problemas-com-uft-8-e-iso8859-1-em-phpmysql/

>> WeBr T.I. – http://weber.eti.br/2009/04/28/erro-mysql-codificacao-caracteres-banco/

Espero ter ajudado mais uma vez… Se gostaram do post, comentem.

Arquivo

May 2012
S M T W T F S
« Mar    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Tags