Codificação de Caracteres no MySQL e PHP/HTML
É 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:
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.
Categorias
Posts Recentes
- Formas normais e consultas com PHP e MySQL – Parte 02
- Formas normais e consultas com PHP e MySQL – Parte 01
- 3G, 3G+ e 4G: quais as diferenças entre essas tecnologias?
- 10 mitos da incompatibilidade nos navegadores para HTML/CSS/JS
- AgiDC – Metodologias Ágeis na prática
- Hackers x Crackers: Quem são os mocinhos?
- Utilidade pública – reimpressão de boletos bancários
- Criando um menu DropDown dinâmico com CSS3, PHP e MySQL
- Lendo e escrevendo arquivos de texto (.txt) com PHP
- Selecionando itens de registros com Javascript
Arquivo
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| « Mar | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
Tags
Acessibilidade Acessórios apple apps banco de dados blog chefe Complementos Conhecimentos Gerais desenvolvedor web desenvolvimento designer e-mails firefox foco gmail google HTML internet Java Script javascript JQuery MySQL navegadores Novidades On-line Orientação a Objetos php POO profissionais programador Programação recursos segurança sistema Sistemas Operacionais site software Softwares tabela tarefas Tendências Tecnológicas Tutoriais usuário web
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.




Posted under: