sábado, 31 de maio de 2008

Acentuação no AJAX

Existem várias maneiras de resolver - ou pelo menos tentar - o problema de acentuação no AJAX. Eis algumas:

  1. Na função em PHP que é realizada a ação, o retorno deve ser dado por
    print(urlencode($campo["ds_texto"]));

    Isso irá codificar o resultado que vem da pesquisa SQL. Na função AJAX, após a variável texto ter recebido a resposta responseText, colocar:
    texto=texto.replace(/\+/g," ");
    texto=unescape(texto);

    Isso descodificará o texto.

  2. A segunda forma é colocar na função em PHP que é realizada a ação, o seguinte item:
    header("Content-Type: text/html; charset=ISO-8859-1",true);
    Isso fará com que a codificação seja definida como ISO-8859-1.

  3. Outra forma não tão segura é colocar
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> na página onde será exibido o resultado.

  4. Outra forma é alterar a configuração do arquivo httpd.conf do Apache. Isso fica para outra hora!


Se Murphy ajudar é capaz que tudo isso funcione. Talvez nenhum funcione, talvez funcione parcialmente. Firefox e Internet Explorer nunca se deram muito bem, há algumas desavenças! :D

A solução que funcionou pra mim foi a 2. Inseri apenas o header na chamada PHP e deu certo, tanto pro Firefox quanto no Internet Explorer e Opera.

Tem que ficar atento quanto ao cache. Geralmente se altera uma chamada ou função e ela não reflete em solução. Reiniciar o computador, dasabilitar o cache pelas páginas ou limpar o cache de vez em quando ajuda!

0 comentários: