ajax php mysql encoding

Essa semana tive um problema com um sistema para web feito com PHP + Ajax (Jquery) + MySQL.

As páginas estavam com a codificação européia (iso-8859-1) e o banco de dados MySQL também, o maior problema que que o ajax só trabalha com o utf-8!

Isso significa que se você passar qualquer dado de padrão europeu pelo ajax (coisa que é inevitável) quando for exibido na página (html) ele nos fará o favor de aparecer com “?” e caracteres estranhos no lugar da acentuação de língua portuguesa.

Para resolver esse problema eu fiz o seguinte:

  1. Transformei todas as páginas html de iso-8859-1 para utf-8
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. Configurei a sessão do banco de dados para utilizar o UTF-8, com uma função dentro do PHP:

    mysql_set_charset('utf8',$link);

Agora mesmo com todas as suas tabelas do MySQL configuradas para utilizar o padrão europeu (latin1, latin1_swedish_ci), o MySQL tratará de forma transparente convertendo os Charset para você sem problemas na hora de recuperar e inserir dados.

Com isso eu já tinha matado metade dos meus problemas, mas mesmo assim alguns valores que eram retornados pelo banco de dados e eram passados pelo Ajax continuaram vindo com alguns caracteres estranhos, para isso existe uma função no php que resolveu o meu caso:

string utf8_encode  ( string $data  )

// Exemplo de uso:

echo utf8_encode($valorVariavelTeimosa);

Bem, isso deixou meu App-Web 100% português, sem gambiarras e POG’s espalhados pelo código.

Boa Sorte!

Links:
http://en.wikipedia.org/wiki/Character_encoding
http://www.php.net/manual/pt_BR/function.utf8-encode.php
http://en.wikipedia.org/wiki/Encoding

Posts Relacionados