UTF-8 como PHP e MySQL

Retirado de Surreal Art Web

Percebi que os sites da grande e poderosa Google, e outros também grandes como YAHOO! trabalham com a codificação UTF-8, mas pensei com meus botões… Porque?
Descobri que o UTF-8 tem o maior suporte a caracteres em relação aos outros, até porque trabalha de uma forma binária.
Então mandei logo o famoso:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Resultado? Ainda tive problemas.

Então fui pesquisar novamente e descobri a saída.

Pensei em passar absolutamente tudo para UTF-8. Mas a pergunta era… O que é este tudo?

Aprendi que os sistemas de arquivos dos sistemas operacionais trabalham também com codificação. Ubuntu em ext3 por exemplo também trabalha com o UTF-8.

Ou seja, quando criamos um arquivo, ele é criado com o charset padrão do sistema. O Windows possui um próprio, então achei uma opção interessante no notepad++, converter para utf-8 (SEM BOM) (Formatar > Converter para UTF-8 (SEM BOM), então ele irá salvar o arquivo na codificação UTF-8. 🙂
Simples, o arquivo já está em UTF-8 e o que faço no PHP?
Insiro no inicio da página esse cabeçalho:

header(‘Content-type: text/html; charset=”utf-8″‘,true);

Mas somente isso não basta, as tabelas do banco de dados também devem estar em UTF-8, crie o banco de dados em utf8_bin, e verá que todas as tabelas que não forem definidas um charset e um collation, irão automaticamente ficar com utf8_bin nos campos de texto.
Mas não para por ai, ainda tem que definir a codificação da conexão com o banco de dados.

Se você usa uma conexão simples, um mysql_set_charset(’utf8′) funciona, no caso de quem usa mysqli (como eu), você irá iniciar sua variável $mysqli e observar o seguinte objeto: $mysqli->set_charset(’utf8′)

Meu arquivo de conexão ficou assim:

<?
# Efetuando a conexão com o banco de dados
$mysqli= new mysqli(’localhost’, ‘root’, ’senha’,'nome_banco’);
# Selecionando charset de conexão
$mysqli->set_charset(’utf8′);
?>

Bom, para simplificar verifique sempre os passos seguintes:

1. Charset e collation do banco de dados e das tabelas que nele contém
2. Charset de conexão com o banco de dados
3. Arquivos sempre codificados em UTF-8 (dica é usar o notepad++ ou uma IDE como o Zend)
4. Enviar os cabeçalhos via HTML
5. Enviar os cabeçalhos também via PHP

E claro, não menos importante, verifique como está o seu arquivo .sql que irá importar para o banco de dados, ele também deve estar em utf-8.

Bom, é isso ai, desculpem talvez algum erro de português ou se não foi “entendível” o suficiente, mas estou postando as 1:26am, hehe, vejo muitas pessoas com esse problema de codificação, então decidi escrever sobre minhas experiências com elas.

Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s