Codigos Fonte, Artigos e Dicas
Encoding – Ajax + MySQL

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:
- Transformei todas as páginas html de iso-8859-1 para utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- 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
| Imprimir artigo | Este artigo foi escrito por Alexandre Santos em 7 07UTC agosto 07UTC 2009 às 21:00, e está arquivado em Desenvolvimento Web. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |


há 1 ano atrás
Alexandre,
Para complementar, se fosse somente textos, basta fazer uso do iconv, podemos converter arquivos de texto para diversos padrões, nesse caso o comando será usado da seguinte maneira:
# iconv -f iso-8859-1 -t utf-8 arquivo_iso-8859-1.txt > \
> arquivo_utf-8.txt
Outra opção tbm é usar um comando em Shell Script. Ele eh tão bom que vc pode fazer tudo em uma linha só:
find -type f -maxdepth 1 | xargs -i iconv -f iso-8859-1 -t utf-8 {} -o {}
Abraços.
[Reply]
há 1 ano atrás
Com certeza Hax,
não basta apenas aplicar o encoding à TAG no html, o arquivo também tem que ser salvo nesse formato!
Para os amantes de Linux, o bluefish mostra no rodapé da janela o encoding do arquivo.
No Aptana Studio eu ainda não achei isso.
Grande abraço Haxnetwork!
[Reply]
há 6 meses atrás
Oi Alexandre
Só comentei para te agradecer, você com esse artigo acabou com um problema grave que estava tendo em meu site.
(junto à hora no topo do site os dias da semana quando chegava ao sábado ou terça -feira apareciam todos doidos! Ajax tem dessas coisas)
Muito obrigado!
[Reply]