Bom dia, amigos do GUJ, estou quebrando a cabeça para tentar solucionar problemas relacionados a acentuaçao e caracteres especiais usando Ajax.
O problema ocorre apenas no retorno do resultado para a página.
Procurando no Google encontrei varios comentarios e opinioes sobre soluçoes para isto, porem, nao obtive sucesso em nenhuma delas.
Eis aqui o que eu já tentei fazer e NAO funcionou:
No codigo do Ajax também tentei:
Alguem já passou por isso e sabe o que mais posso tentar fazer?
Obrigado desde já pela atençao!
Pelo fato de vc. ter mencionado AJAX, assumo que seu problema está em exibir caracteres acentuados em um conteúdo qualquer que veio como resposta de um XMLHttpRequest, certo ?
Se nem isto está rolando, o primeiro passo é garantir que uma página JSP normal, quando visualizada no seu browser, mostre acentos corretamente.
O browser usa a informação do header e do próprio documento (via meta ou PI) para saber qual a codificação do que está vindo e apresentá-la na tela.
No caso o AJAX, temos um segundo documento que vem na resposta do XMLHttpRequest. No processamente deste segundo documento, vc. deve usar o Content-Type “text/xml” e o encoding que vc. quiser, que não precisa ser o mesmo do documento já carregado. O importante é ter o PI logo no início (<?xml version="1.0" encoding="xxxxx" ?>) e gerar a página de forma consistente.
P.ex, se a resposta passa por um JSP, use
<%@ page contentType=“text/xml; charset=ISO-8859-1” %>
no JSP que gera a resposta.
Vejo que muitos estão com esse problema e encontrei uma solução viável para corrigí-lo.
Não farei a explicação técnica, apenas a solução.
Coloque no seu javascript a função encodeURI.
Nos dados que vc for enviar para o servidor web ou conteiner
var texto = encodeURI(document.forms[0].meuTexto.value);
Dessa forma, vc estará forçando o enconding em UTF-8.
Na sua action ou servlet java, use a classe URLDecoder, método decode para decodificar os caracteres no formato UTF-8.
String meuTexto = URLDecoder.decode(request.getParameter("meuTexto"), "UTF8");
System.out.println("Texto corrigido: " + meuTexto);
Pronto, com isso vcs conseguiram exibir os acentos corretamente e cedilhas.