Leandro Vieira Pinho´s Blog

Just another WordPress weblog

Ajax e os acentos

December 7th, 2006. Published under ajax, javascript, php. 7 Comments.

Neste post, irei reproduzir um outro post que eu havia escrito em Janeiro deste ano, o qual falava sobre Ajax e os acentos.

Você já “queimou a cuca” ao trabalhar com Ajax e perceber que os acentos não estão sendo exibidos corretamente? Então, passei por isso ao desenvolver uma busca instantânea com esse método. E a solução? Vou explicar-lhe neste post.

Sempre que tenho alguma dúvida durante o meu trabalho, recorro aos amigos, aos fóruns e principalmente ao Google; e foi nesse último que encontrei a solução para o meu problema, no tutorial: Ajax para quem só ouviu falar, escrito pelo Élcio.

Lembrando que trabalho com PHP e se você trabalha com outra linguagem dinâmica, faça as modificações necessárias.

No arquivo PHP, precisamos utilizar a função urlencode(). Então, teremos algo assim:

$txt = "Tenha um bom coração.";
$txt = urlencode($txt);

O texto retornado será algo assim:

Tenha+um+bom+cora%E7%E3o.

Bom, agora no javascript fazemos assim:

var resultado = ajax.responseText; // Texto retornado pela requisição do ajax.
resultado = resultado.replace(/\+/g,” “); // Substitue o “+” por um espaço.
resultado = unescape(resultado); // Desfaz o que a função urlencode(); fez.

Bom, este é o processo para termos os acentos funcionando perfeitamente em nossas aplicações em Ajax.

7 Comments

Micox  on December 7th, 2006

Opa. Beleza Leandro?

Bom cara, eu discordo desta forma de RECEBER os dados via ajax. Existem outras formas mais fáceis e mais corretas:

1) Colocando um header no arquivo server-side para corrigir o tipo de codificação como eu falo neste meu post.

2) (o que eu considero mais correto) Enviando no formato de HTML Entities para o navegador do usuário. (html entities são aquelas entidades ç para ç, etc)
Exemplo:
1. $txt = “Tenha um bom coração.”;
2. $txt = htmlentities($txt);

Dessa forma não será necessário fazer nenhuma DEcodificação no javascript :)
Testa ae :) FAlows.

leandro  on December 7th, 2006

Olá Micox,

Eu também concordo com você e até utilizo este header no arquivo server-side. Até falo a respeito dele no meu curso Web sites com Ajax.

Mas como falei no início deste post, eu apenas transcrevi um outro post que eu havia escrito no início deste ano, para ser mais específico em 3 de Janeiro.

Por que tenho vários redirecionamentos que são feitos a este blog através do referido post anterior. Somente.

Um abraço.

RR  on March 8th, 2007

Eu concordo com o artigo, se eu usar o htmlentities(), eu nao poderei utilizar o retorno em caixas de texto (textarea), por que eles irao mostrar os htmlentities como são e nao de forma ç.

quanto a usar os headers, acho que tem muitas confusões, uma solução simples dessa eh muito mais aceitavel.

Mas ainda faltou colocar no blog o envio dos dados com acentos com AJAX, quando eu envio os dados eles tbm viram codigos, e estou procurando a solucao para isso.

[]

ferdinando  on May 31st, 2007

Use
header(”Content-type: application/html; charset=iso-8859-1″);

no seu script php, que ele ira retornar uma pagina codificada corretamente, fiz isso aqui para o retorno de valores pesquisados no mysql, antes de começar a usar o echo, e deu tudo certo, funcionou com o ajax, com input, com tudo..

t+

marcos  on August 17th, 2007

ola pessoal,
em asp como uso ?

Isaac Nathan  on September 5th, 2007

eu utilizer a forma do header no php, mas quando o php passa pelo server, define o charset poe isso na primeira linha do meu codigo html: 

Um outro amigo tinha mostrado isso em uma comunidade, não lembro qual, nem a solução, mt menos o porque

admin  on September 22nd, 2007

Isaac, provavelmente está ocorrendo o seguinte: sua página está salva com um charset, por exemplo, iso-8859-1. E sua página foi salva com charset utf-8. Ou vice versa.

Leave a Comment