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

Transmitindo um evento ao vivo com FMS: Os Bastidores

Transmitindo um evento ao vivo com FMS: Os Bastidores

  • April 16, 2007

Como eu havia informado, fizemos a transmissão ao vivo do evento Claro ParkFashion no site Comuniweb. E como prometido, vou revisitar este evento agora para mostrar para vocês como foi feita a integração e a logística geral do evento e como tudo começou.

Read More
PHPT: Writing tests for PHP

PHPT: Writing tests for PHP

  • August 23, 2009

This year the PHP Community promoted the PHPTestFest in various places around the globe and it was a success. I participated in the event promoted by the PHPSP UG which ended up as the team with the most committed tests, after participating in the event I kept on going and have since obtained a SVN account and karma to be a official test commiter to PHP. So if you did not get the chance to learn how to write tests in your local TestFest I will now go over the steps taken so you can be ready for next year.

PHPT is a extremely simple test framework designed to test PHP. Its atomic nature and independent test execution make it perfect for the kind of tests needed, so tests can be really focused and test specific function and/or bugs.

What do I need to know?

The beauty about PHPT is that you need to know very little other than writing PHP code. A little knowledge into the inner workings of PHP will of course help you in finding areas of code that need testing, and how best to test them, but just knowing PHP is enough to start.

I have divided this post into 5 parts so we can get started:

  1. Preparing the Environment
  2. Choosing what to test
  3. Writing a test
  4. Executing a test
  5. Submitting a test to PHP

Read More
Closing a chapter

Closing a chapter

  • September 1, 2024

This is it; the house is mostly empty as I sit in my temporary home office, the living room table. Our Dutch lives are mostly in boxes in a container, and the only things left to go are Bella, our retriever, and me.

Read More