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:
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TesteAJax</title>
<script type="text/javascript" src="js/jquery/jquery-latest.js"></script>
<script>
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]');
}
</script>
</head>
<body>
<input type="button" onclick="ajaxJQuey()" value="Teste jQury" />
<input type="button" onclick="ajaxIE()" value="Teste IE" />
<div id="resposta"></div>
</body>
</html>
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("Â", "Â").replace("Ã", "Ã").replace("É", "É").replace("Ê", "Ê").replace("Ã?", "Í").replace("Ó", "Ó").replace("Ô", "Ô").replace("Õ", "Õ").replace("Ú", "Ú");
texto = texto.replace("ç", "ç").replace("Ç", "Ç").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("Â", "Â").replace("Ã", "Ã").replace("É", "É").replace("Ê", "Ê").replace("Ã?", "Í").replace("Ó", "Ó").replace("Ô", "Ô").replace("Õ", "Õ").replace("Ú", "Ú");
texto = texto.replace("ç", "ç").replace("Ç", "Ç").replace("º", "º");
return texto;
Sabem como solucionar no AJAX?
Abraços