Codificação Drops

Depois de muito tempo sem postar, eis que volto %) Estou trabalhando aqui na 5Clicks agora. Uma experiência muito bacana, trabalhando com coisas legais. Depois rola um post só pra puxar o saco da 5'. hehehe

Bom, vamos ao que interessa. Hoje me deparei com um problema que muitos devem passar por aí, e vejo que a maioria prefere se adaptar ao inconveniente a corrigí-lo. De fato, é meio chatinho achar a resposta para a pergunta, mas antes de me adentrar na solução, acho que seria legal eu falar qual é o problema.

Codificação. Sim, se você programa ou faz alguma coisa pra web, já teve dor de cabeça com os ISO-8859-1 (ou latin1), UTF-8, etc... Antes que seus olhos encham de lágrimas e seu coração pule de alegria, não se engane: não irei resolver todos os seus problemas de codificação (a menos que todos os seus problemas se resumam no problema que irei listar aqui, mas aí, ah, que sem graça... :P )

Tá, qual é o problema? Bom, o nosso querido MySQL retorna por padrão (pelo menos até onde sei, os comentários estão aí para corrigir as besteiras que eu falo também) na codificação latin1. Então, independente de como os dados são adicionados, ele sempre retorna em latin1. Com isso, numa pesquisa feita ao banco, se impressa na tela em uma página em UTF-8, o resultado da consulta vai mostrar as malditas interrogações de erro de codificação. O latin1 é bacana, o latin1 é legal, mas utf-8 foi criado pra unificar essa bagunça de codificações (aguardem um post só pra defender o unicode). Então, já que inventaram essa codificação pra facilitar nossa vida, que a usemos então!

Muitas pessoas passam a usar páginas iso-8859-1 por não saber como fazer o queridíssimo MySQL retornar em outra codificação. Bom, não é difícil achar isso, com algum empenho dá pra achar como, tanto que eu nem sou um gênio e achei :P. O problema em achar essa resposta, é que se costuma fazer uma pesquisa do tipo "codificação mysql utf8". Isso retorna muitos resultados em como mudar a "collation" do banco. Daí, um colega com menos empenho ou com um prazo apertando o pescoço (acho que isso ocorre a maioria das vezes), acaba sucumbindo em não conseguir resolver isso, e faz a página toda em iso-8859-1.

E agora, sem mais delongas, uma solução bacaninha pra mudar o retorno do banco de dados MySQL pra unicode. Basta passar o seguinte comando toda vez que uma conexão ao banco for criada:

SET NAMES 'utf8';

Não entendeu? Tipo, você está lá, fazendo sua conexão ao banco, no PHP por exemplo, daí você faz:

$conexao = mysql_connect($host,$usuario,$senha);
mysql_select_db($database);
mysql_query("SET NAMES 'utf8'");

É só fazer isso %) E sigam usando seu unicode felizes e contentes. Depois vou postar mais dicas pra lidar com a codificação, um assunto que dá muita dor de cabeça pra muuuita gente.

Espero que tenha ajudado!

[]'s

Sahb,.