AJAX e Acentos

Surfando pelos blogs procurando um novo tópico para postar acabei caindo no blog do Gustavo Paes em um artigo que falava sobre problemas de acentos no AJAX. Vou aproveitar então e refletir sobre este assunto também.

AJAX nasceu para o UTF-8 disso não tenho dúvidas, mas o XML tem seu lado ISO-8859-1, embora eu já tenha enfrentado inúmeros problemas sobre este aspecto de codificação. Bem temos dois lados do problema com AJAX, acentos e transmissão de dados.

Recebendo dados em XML

Quando os dados são recebidos por uma transmissão AJAX a forma mais comum utilizada é o XML. Porém o XML por padrão utiliza a codificação UTF-8 e quando os dados são lidos pelo javascript a coisa fica confusa e acentos viram hieróglifos. Com o tempo achei uma solução que me atendeu e achei outras que muitos sugerem mas por algum motivo não funcionou comigo, como esta.

Minha solução entao foi a seguinte:

No arquivo que gera os dados, utilizo este cógido ```php $string = rawurlencode($dados);


No arquivo que recebe, dentro da função que interpreta os dados recebidos uso esta função para reverter: ```js
var string = unescape(dados);

Enviando dados por AJAX

Quando você envia dados via AJAX para um script que grava no banco de dados, você muito provavelmente terá problemas com acentos nos dados que guardará no banco. A sintonia perfeita de “collate” e Charset do banco, com o cliente, e o PHP é algo complicado e trabalhoso de se obter usando cabecalhos (headers), por isso achei outra solução, que não é a mais comoda, mas é simples e resolve sempre.

Faço o envio de dados de forma padrão sem mecher em nenhuma configuração de charset do javascript ou ajax, deixo todo o tratamento para o php, onde executo a seguinte função no array $_POST, de onde provem os dados que vou gravar.

< ? function ajaxPostFix (&$value){ $value = utf8\_decode($value); }

array\_walk($\_POST,'ajaxPostFix'); ?>

Pronto. resolvido o problema, dados gravados corretamente.

Ok, estes são meu “2 centavos” sobre o assunto.

comments powered by Disqus

Related Posts

PHP Security: Are you paying attention?

PHP Security: Are you paying attention?

  • September 29, 2009

Security is a recurring topic when the talk is about Technology, or any other area for that matter. To take security for granted when you are developing an application, as simple as it may be, is a huge mistake which can take a turn for the worse. I have ran into lots of excuses for ignoring security in the past, one of them is the recurring “This is just a simple application, it has no sensitive data”, this may be a valid point for the person repeating it like a mantra, especially because this person is generally suffering of great pressures , short timeframes and a lack of proper management ready to deal with web development. Cal Evans in his Open Teams session gives a perfect example of this when he tells us about a project with an impossible due date. Upon questioning the due date to the marketing department their reply was straight forward: “Because that’s when the brochures are done”. This is an example of the lack of perception around web development and all the issues we need to take into consideration when developing applications.

Read More
PHP Conference Brasil - 1º Dia

PHP Conference Brasil - 1º Dia

  • December 2, 2006

E assim o primeiro dia do PHP Conf passou, e muito foi discutido e apresentado. Alguns problemas de logística e outros de organização, mas mesmo somando-se estes a uma ou outra palestra que não atingiu a meta não tirou o brilho das palestras que se destacaram, e me surpreenderam muito inclusive.

Read More
Rumo ao PHP Conference Brasil

Rumo ao PHP Conference Brasil

  • November 30, 2006

PHP Conference Brasil Por algum tempo espero a oportunidade de comparecer a uma conferencia de PHP. Infelizmente não pude ir para a International Conference em Frankfurt, pois ainda estava “fora do orçamento”. Depois de muito esperar a iniciativa de fazer uma conferencia de PHP foi finalmente concretizada aqui pelo Brasil.

Read More