terça-feira, 28 de abril de 2015

Problemas de Codificação: UTF8 - ISO-8859-1

Sabe quando você está tentando inserir dados de uma página web num banco de dados MySQL e a codificação fica toda errada? Então já passei por isso várias vezes e descobri que é simples resolver, é uma questão de lógica. 

O que acontece é que geralmente a gente não se preocupa ou não tem controle total dos dois lados, cliente e servidor, então programamos por exemplo um formulário ou um cliente de webservice que pega os dados do jeito que vem e tentamos enfiar no banco de qualquer jeito sem se preocupar com a codificação que o banco está utilizando.

Portanto para resolver e acabar com a dor de cabeça, é só definir qual será a codificação da página e também qual a codificação que o banco de dados utilizará. Se não tiver  controle dessa codificação então converta os dados para a codificação que o BD está utilizando.

Por exemplo, se sabe que o banco de dados está utilizando latin1 (ISO-8859-1) então utilize um Content-type na página com a mesma codificação e se ainda assim não estiver tendo resultados positivos então converta os dados de cada campo do formulário ou do array JSON por exemplo com a função: iconv('UTF-8','ISO-8859-1','Informação a ser convertida). Esta função funciona assim: os dados do primeiro parâmetro, dizem qual é a codificação da informação que será convertida, o segundo parâmetro diz para qual codificação você deseja que seja convertido e o terceiro parâmetro é a informação que você deseja converter.

Isso já me ajudou muito nas horas em que eu estava quebrando a cabeça, tentando entender porque eu enviava as informações de um jeito e elas chegavam no banco de dados de outro jeito. 

Então é isso pessoal, essa é a primeira de muitas dicas que pretendo passar para vocês ao longo dessa jornada em busca do conhecimento e da transferência do mesmo. Prometo que tudo que já me atormentou e me deixou noites em claro tentando encontrar solução será compartilhado com vocês à medida em que eu for me lembrando e/ou aprendendo. Espero ajudar e conseguir disseminar conhecimento e compartilhar experiências com vocês. Um grande abraço!