Acentuação em Ajax

  Acentos no Ajax

 

Descobri uma coisa legal e to mandando para vocês… Como colocar acentos em aplicação com Ajax! Na pagina que recebe os dados: (Na primeira linha).. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br"
lang="pt-br">

Na pagina que envia os dados, precisa colocar…

EM ASP:
Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"

EM PHP:
header("Content-Type: text/html; charset=iso-8859-1");

22 Respostas to “Acentuação em Ajax”

  1. André Gusmão Says:

    Estou tendo um sério problema:

    Tenho um script que executa o XMLHTTP e submete via POST o valor digitado num campo TEXT para um script PHP.
    O script PHP pega o valor digitado, grava num arquivo TXT através de fopen() e fwrite().

    O que acontece é que se o conteúdo tiver acentuação, o valor gravado no arquivo fica totalmente desconfigurado, mas se eu mando retornar vem correto.

  2. Gean Says:

    André, tenta converter a string antes de gravar no arquivo (ou antes de passar via post) usando utf8_encode

    Importante é vc manter o mesmo charset tanto da página q recebe os dados (ajax/servidor) como a página cliente…

    Tive diversos problemas com isso, resolvi mas ainda não entendi tudo, só aprendi q tenho q manter tudo na mesma codificação, no caso, utf8.

    Tenta ae e qq coisa avisa…

    ps: nem sabia q esse blog tava aberto na web, na real eu tava usando ele só prá guardar uns textos rápidos…hehe

  3. André Gusmão Says:

    Veja que estranho…
    Eu usei o mesmo charset em todas as paginas (UTF-8)
    O retorno que vem pra primeira página através do echo() vem correto mas o conteúdo do arquivo fica errado…
    Veja o código:

    x-teste.php

    function enviar(form)
    {
    x = new ActiveXObject(‘Microsoft.XMLHTTP’);
    x.onReadyStateChange = function (res)
    {
    if(x.readyState==4)
    if(x.status==200)
    retorno.innerHTML = x.responseText;
    }
    x.open(‘POST’,form.action,true);
    x.setRequestHeader(‘Content-Type’,’application/x-www-form-urlencoded’);
    x.send(form.texto.name+’=’+form.texto.value);
    }

    x-teste2.php

    Se eu escrevo ANDRÉ no campo e clico em Enviar, retorna ANDRÉ, mas no arquivo texto.txt é gravado ANDRÉ

  4. André Gusmão Says:

    Putz.. nao foi o código HTML na mensagem

  5. André Gusmão Says:

    Descobri…

    Usando a função utf8_decode() antes de gravar no arquivo funcionou.

  6. Gean Says:

    Era o q eu ia sugerir, usar encode de um lado e decode do outro…

    ainda bem q funcionou…

    qq coisa avisa.

  7. Gunther Says:

    Prezados, escrevo para registrar que a ajuda de vcs com esta dica de acentuação me salvou o dia!!! Grato

  8. Paulo Júnior Says:

    Prezados, qual a função equivalente ao utf8_decode no asp?

  9. im0rt4lz Says:

    Paulo, tente usar Server.HTMLEncode

  10. Pedro Says:

    Andava desesperado à procura desta funcionalidade. Muito bom. Funciona na perfeição. Acabou-se a “caca”, a “actuacao”, ” ‘a ” e afins.
    Obrigado

  11. Gean Says:

    Legal q ajudou Pedro.

    😉

  12. hebertphp Says:

    Boa Tarde…

    Aproveito para deixar o meu comentário que o esquema da acentuação funcionou legal aqui também….

    Valeu pela dica..

  13. Xande Says:

    Foi de grande ajuda essa dica. 🙂
    obrigado, sempre enroscava nas acentuações

  14. Eduardo Says:

    nao to conseguindo fazer funfar este esquema dos acentos alguem pode me ajudar por favor

  15. Guilherme Mendes Says:

    Cara, não tava botando fé nessa inserção do header, mas foi justamente essa solução simples que resolveu o problema num teste que estou fazendo aqui. Muito obrigado!

  16. Bruno Cunha Says:

    Olá Gean!

    Estava aqui quebrando a cabeça com esse problema do encoding, pois estava usando o framework pototype, chamando um asp, e os caracteres especiais estavam com problema. Foi só adicionar o Response.AddHeader e o problema foi solucionado.

    Vlw!

  17. Gean Says:

    Bruno, eu tbém quebrei bastante a cabeça até achar essa solução simples.

    😉

  18. Bruce Says:

    Caracolas!!!!! vcs salvaram a minha vida!!!!!!!!!!! valew mesmo ja tinha tentado de tudo e nada dava certo!!!.. até que essa simples função do php já fazia o que eu queria!!

  19. Gean Says:

    Poseh Bruce, prá ver q esse post aqui tá sendo útil, vão fazer 3 anos q ele foi pro ar e os mesmos bugs ainda acontecem.

    Valew, qq coisa avisa ae !!!

  20. Benedito Says:

    A solução se constitui em 2 providências:
    1 – Chamada:
    $.ajax({
    url : “Ajax_getxxx.asp?Matr=”+Matr,
    success : function (data) {
    window.status = data;
    $(“TEXTAREA[Id=IdTextarea]”).html(data);

    }
    });
    2 – Stub ASP (fornecedor da informação):
    Session.CodePage = 1252
    strSQL = …
    Set conn = Server.CreateObject(A…)
    conn.Open CONN_STRING
    Set rsTask = Server.CreateObject(…)
    rsTask.Open strSQL,conn,3,3

    Response.CharSet = “iso-8859-1”
    Response.AddHeader “Content-Type”, “text/html; charset=iso-8859-1”

  21. Benedito Says:

    Complementando,

    Existe uma diferença entre as tabelas de codificação de caracteres para as diversas circunstâncias que são estabelecidas na execução de um código ASP:

    A codificação do HTML de apresentação é resolvida com a tag META. A codificação de trabalho do ASP, ao receber o conteúdo de um campo memo (ou BLOB) é a ISO-LATIN (1252).

    Daí a diferença. Todas as dicas anteriores funcionam com campos text (VARCHAR) e não com BLOB.

  22. [bysheep] :: mantendo acentos usando ajax « como posso? Says:

    […] créditos…https://im0rt4lz.wordpress.com/2006/04/25/acentuacao-em-ajax/ […]

Deixe um comentário