quinta-feira, 2 de dezembro de 2010

Acentuação, MySql, PHP e UTF-8

Há muito tempo atrás, no início da era moderna da informática (quero dizer, quando os computadores tornaram-se menores o suficiente para caber sobre a mesa de trabalho), a língua inglesa dominava e era impensável usar acentos, portanto, tudo devia ser digitado sem acentuação e em caixa alta (letras maiúsculas). Ao longo dos anos, finalmente, todos os acentos da língua portuguesa puderam ser usados nos aplicativos, bem como, os teclados incorporaram novas teclas para permitir a acentuação.

Até então, a preocupação com o uso de acentos nos programas era uma questão regionalizada, os técnicos de cada país cuidavam da melhor prática. Atualmente, com o mundo globalizado, a questão ultrapassa os meros acentos para entrar no campo das línguas (além do alfabeto latino ou romano), chinês, japonês, árabe, onde encontramos símbolos diferentes, escritas da direita para a esquerda, ideogramas, etc. Por exemplo, no japonês, há três "alfabetos" hiragana, katakana e kanji, os dois primeiros com um número limitado de símbolos e o kanji com suas dezenas de milhares de ideogramas. A capacidade dos programas e dos técnicos para lidar com esta miríade de símbolos precisou ser ampliada e combinada entre os países.

Embora não seja preciso pensar tão globalmente, a ponto de redigir e manter dados escritos em outras línguas, é necessário que os programadores acompanhem a evolução e adotem conjuntos de caracteres que permitam fácil migração dos dados de um padrão de codificação para outro. Trabalhar com um set de caracteres latin1 ou iso-8859 é o mínimo para o português, mas, pensando de forma um pouco mais
ampla, é interessante trabalhar com o UTF-8. E particularmente o UTF-8, porque pode representar qualquer caracter universal padrão do Unicode, é compatível com o ASCII e está sendo adotado como tipo de codificação padrão para e-mail, páginas web e outros locais onde caracteres especiais são armazenados.

Então, é preciso efetuar poucos ajustes para usar o utf-8 com o PHP e o MySql. Precisei efetuar algumas pesquisas e testes até encontrar o ajuste correto que compartilho com vocês.

No HTML/PHP - Precisamos informar ao browser qual o padrão de codificação adotado. Portanto, acrescente uma tag META à página, como abaixo, dentro do HEAD, cuja finalidade é dizer ao navegador que a página apresentada e os dados digitados devem usar o "utf-8". Ao carregar a página correspondente veja no Exibir/Codificação no browser que deverá informar "Unicode (UTF-8)":
<HTML>
<HEAD>
   <META http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
....

</HTML>


No MySql - Embora tivesse configurado o MySql para trabalhar com utf-8, inclusive o banco de dados, tabela e campos não conseguia que os acentos fossem devidamente apresentados no browser. Após alguma pesquisa, leitura da documentação e testes, verifiquei que é preciso informar a cada conexão com o banco de dados o set de caracteres em uso. Então, é preciso executar a uma query, como abaixo, após a conexão com o banco de dados:
mysql_query("SET NAMES 'utf8'");

Nenhum comentário:

Postar um comentário