Ajax, problemas com acentos do IE

Olá amigos, me deparei com um problema estranho a meu ver…
Seu que usar acentuação com ajax já foi o problema de muita gente, mas no meu caso o erro só ocorre no Internet Explorer 6-7, no firefox funfa beleza…

Já configurei as JSP / HTML, e um parametro de uma lib Ajax (Estou usando a ExtJs):
Ex:

[quote]<!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”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1” /> <!-- ISO-8859-1 -->
[/quote]

Configurar todas as requisições ajax da Ext:
Ext.lib.Ajax.defaultPostHeader = “application/x-www-form-urlencoded; charset=ISO-8859-1”;

No fireox funfa beleza, mas no IE não … tudo que tem acento fica bagunçado… :evil:
Alguem tem uma pista ???

UP ! , Infelismente ainda tou esse problema no IE.

Eu achei uma ferramenta chamda debug bar, com ela eu veje os detalhes das chamdas AJAX:

[quote]GET /Icone/PessoaAction.getEstados.mtw?_dc=1214344883244 HTTP/1.1
Accept: /
Accept-Language: pt-br
Referer: http://localhost:8080/Icone/Administracao.html
x-requested-with: XMLHttpRequest
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; FDM; InfoPath.2)
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=6D54117E925D4712FEFC879450ABE7B1

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 24 Jun 2008 22:01:23 GMT[/quote]

Já no FireBug, aparece isso:

[quote]Response Headers
Server Apache-Coyote/1.1
Set-Cookie JSESSIONID=C7AF2F7D206563257B2EBBFF8A7EEE9D; Path=/Icone
Cache-Control no-cache
Pragma no-cache
Expires Thu, 01 Jan 1970 00:00:00 GMT
Content-Type application/x-www-form-urlencoded;charset=UTF-8
Transfer-Encoding chunked
Date Tue, 24 Jun 2008 22:02:25 GMT
Request Headers
Host localhost:8080
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5
Accept-Language pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
X-Requested-With XMLHttpRequest
Referer http://localhost:8080/Icone/Administracao.html
Cookie JSESSIONID=8CEA3E8CE8D419233B33DDBBB16175A7
Pragma no-cache
Cache-Control no-cache[/quote]

Aguem pode me dizer o que está errado, e como posso contornai isso ?
Tada a minha aplicação está em UTF-8, mudei tudo para UTF-8 e nada… :shock:

Fix um teste(um projeto TESTE) aqui, configureitudo para UTF.

Então criei duas funções que faz chamadas Ajax, 1 usando a jQuery, e a outra usando objeto: XMLHttpRequest do próprio browser.
Só que quando uso a jQuery a acentuação dá problema…

No servidor eu recebo:

[quote]25/06/2008 02:24:14 TesteAction execute
INFO: Nome = Piau%ED%5BJQ%5D, UTF = false (para jQuery)
25/06/2008 02:24:15 TesteAction execute
INFO: Nome = Piauí[IE], UTF = true (para o XMLHttpRequest nativo)
[/quote]

Na Jquery, antes de enviar a chamada, eu configuro o Objeto nativo …no parametro : beforeSend

Ai vai o Código:

&lt;%@ page contentType="text/html; charset=UTF-8" %&gt;

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
	&lt;title&gt;TesteAJax&lt;/title&gt;
	&lt;script type="text/javascript" src="js/jquery/jquery-latest.js"&gt;&lt;/script&gt; 
	        &lt;script&gt;
	         var URL = "TesteAction.mtw";
             function ajaxJQuey(){
                $.ajaxSetup({
                    contentType : "",
                    beforeSend : function(xml){
                        // xml.setRequestHeader('Accept','*/*');
		                xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		                xml.setRequestHeader("charset","UTF-8");
		                xml.setRequestHeader("Encoding","UTF-8");
		                xml.setRequestHeader("X-Requested-With", "");
                    }
                });
                $.post(URL, {descricao : escape("Piauí[JQ]")}, 
                    function(data){
                        jQuery("#resposta").text(data.resposta);
                    }
                );
            }
            
			function ajaxIE()
			{
			    try{ 
				    xml = new ActiveXObject('Microsoft.XMLHTTP');
				}catch(er){
				    xml = new XMLHttpRequest();
				}
				xml.onReadyStateChange = function (res)
				{
					if(xml.readyState==4)
					if(xml.status==200)
					resposta.innerHTML = xml.responseText;
				}
				xml.open('POST',URL,true);
				xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				xml.setRequestHeader("charset","UTF-8");
                xml.setRequestHeader("Encoding","UTF-8");
				xml.send('descricao=Piauí[IE]');
			}            
             
        &lt;/script&gt;  
&lt;/head&gt;
&lt;body&gt;
    &lt;input type="button" onclick="ajaxJQuey()" value="Teste jQury" /&gt;
     &lt;input type="button" onclick="ajaxIE()" value="Teste IE" /&gt;
    &lt;div id="resposta"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

Aparentemente tudo está configurado corretamente…
pelo DebugBar no IE, os paratmetros são identicos…
Será se o Erro é da Jquery ? Alguem tem uma dica ?

Cara esse negoço de Enconding é muito chato… :evil:

Desculpa desenterrar o tópico, mas to com o mesmo problema… conseguiu resolver?

Cara, consegui mas foi utilizando outra biblioteca… a ExtJS.
Agora dependendo do projeto é melhor utilizar Jquery, que ainda tou com problemas, mas no no IE. como as mensagens falam.

Cara

Eu consegui resolver isso ai. Ta funcionando tanto no ff como no ie, e tbm no opera, chrome e safari rs…

Na verdade, localizei o problema, que seria um bug no método serialize, e criei ma extensão.

Nosso problema era parecido, o meu era no post e o seu eh no get, entao talvez te ajude. Se quiser me da um grito ai.

abs

Olá Ricado, se achou a solução então compartilhe-a com os amigos.

att.

aew veio…se vc quiser eu tenho uma gambilução pra vc

public String corrigeAcentuacao(String texto) { texto = texto.replace("á", "á").replace("â", "â").replace("ã", "ã").replace("é", "é").replace("ê", "ê").replace("í", "í").replace("î", "î").replace("ó", "ó").replace("ô", "ô").replace("õ ", "õ").replace("ú", "ú").replace("û", "û"); texto = texto.replace("Ã?", "Á").replace("Ã&#130;", "Â").replace("Ã&#131;", "Ã").replace("Ã&#137;", "É").replace("Ã&#138;", "Ê").replace("Ã?", "Í").replace("Ã&#147;", "Ó").replace("Ã&#148;", "Ô").replace("Ã&#149;", "Õ").replace("Ã&#154;", "Ú"); texto = texto.replace("ç", "ç").replace("Ã&#135;", "Ç").replace("º", "º"); return texto;

mas isso eh soh ate vc acha uma solução

ps: nao sou gambizero, mas enquanto nao tem solução, o mico da tigre te da a solução!!!

ashuiahsiuahiuh acabei de inventa a frase

que vergonha :oops:

Como não estou em condições de ler todo o topico e as respostas…

Na tag aonde entra CHARSET, coloque ISO-8859-1 no lugar da UTF-8

Ola pessoal,

Estou com o mesmo problema, alguém de vocês conseguiu resolver o problema do ajax quando se usa o browser internet explorer??

Amigos,

Meio sem opção assim como o amigo riceirolves utilizei o método que ele implementou e consegui resolver quase tudo…
menos quando é digitado por exemplo JOÃO assim todo em maiúsculo…
A forma que solucionei foi:

		byte[] aux = texto.getBytes("ISO-8859-1");
		texto = new String(aux, "ISO-8859-1");
		texto = texto.replace("á", "á").replace("â", "â").replace("ã", "ã").replace("é", "é").replace("ê", "ê").replace("í", "í").replace("î", "î").replace("ó", "ó").replace("ô", "ô").replace("õ ", "õ").replace("ú", "ú").replace("û", "û");  
        texto = texto.replace("Ã?", "Á").replace("Ã&#130;", "Â").replace("Ã&#131;", "Ã").replace("Ã&#137;", "É").replace("Ã&#138;", "Ê").replace("Ã?", "Í").replace("Ã&#147;", "Ó").replace("Ã&#148;", "Ô").replace("Ã&#149;", "Õ").replace("Ã&#154;", "Ú");  
        texto = texto.replace("ç", "ç").replace("Ã&#135;", "Ç").replace("º", "º");
        return texto;

Sabem como solucionar no AJAX?

Abraços