Quem nunca teve problemas com codificação de caracteres especiais? Nós brasileiros, usando o nosso maravilhoso português, talvez nunca tenhamos reparado, mas a língua inglesa não possui acentos em suas palavras e, portanto, não tem problemas de codificação que nós enfrentamos por aqui. A codificação pra língua inglesa é “UTF-8” e nós usamos a “ISO-8859-1”, mas nada impede de usarmos também “UTF-8”. O problema é conseguir configurar corretamente o sistema para usar essa codificação.
Como muitos sabem, trabalho com desenvolvimento WEB e codificação de páginas sempre foi um trabalho árduo. Recentemente, venho trabalhando com o framework prototype.js para aplicações com AJAX e em uma certa página, no envio de e-mails, os caracteres informados num campo “textarea” eram enviados completamente errados. Abaixo segue um exemplo do que estou falando:
“da pesquisa inédita no Brasil “1º Mapa do E-Gov Municipal no Brasil”, realizada de setembro a novembro de 2007, de forma colaborativa e envolvendo a adesão voluntária dos funcionários do”
Seguindo uma dica do amigo Antônio, o problema foi solucionado definindo as configurações corretas de codificação.
Nas páginas ASP que geram informações (no meu caso o XML para o AJAX) e nas páginas ASP que recebem as requisições, basta definir as opções abaixo:
Response.Charset=“UTF-8”
Session.CodePage=65001
Para o meu caso, funcionou perfeitamente!
Interessante é definir as linhas acima num arquivo de inclusão utilizado por todas as páginas. Isso facilita muito as questões de manutenção.
Caso não resolva no seu caso, utilize o método paralelo de solução rápida baseado no POG que desenvolvi abaixo:
Função Js para codificação dos caracteres:
…
},
codificaString: function (){
var strRetorno="";
for(var i=0;i<arguments[0].length ;i++){
if (arguments[0].charCodeAt(i)<128){
strRetorno += arguments[0].charAt(i);
}else{
strRetorno += "&#"+arguments[0].charCodeAt(i)+";";
};
};
return strRetorno;
},
…
Função ASP para decodificar os caracteres codificados pela função Js
Function HTMLDecode(sText)
Dim I
sText = Replace(sText, """, Chr(34))
sText = Replace(sText, "<" , Chr(60))
sText = Replace(sText, ">" , Chr(62))
sText = Replace(sText, "&" , Chr(38))
sText = Replace(sText, " ", Chr(32))
For I = 1 to 255
sText = Replace(sText, "&#" & I & ";", Chr(I))
Next
HTMLDecode = sText
End Function
*Espero que não precise usar o método POG… ?
Para maiores informações, veja os links abaixo:
Ou muiiiito útil , estava com problemas na hora que o asp me retornava um json e esse post veio como uma luva … obrigado ae, sucesso pra ti
Valeu Bruno, me adiantou muito tempo aqui, perdi mt tempo igual o Fábio nessa parada. Vc me salvou tb hehe.
Abraços
Brunão… passei o dia tentando resolver essa parada!! Em cima da hora de vazar.. 17:50…. encontrei esse post!! Deus continue te iluminando meu querido! Valeuuuuuuuuuuuuuuuuu!!!
Bruno,
Valeu pela dica.. o meu problema foi solucionado.
Falou !
amigão, depois de vasculhar a internet cheguei aqui :)
e me vejo com o mesmo problema, ou pelo menos, muito semelhante, veja se podes me dar uma ajuda
possui uma pag. com ISO-8859-1 e esta contem um textarea que ao submeter envia o tx para uma pagina que grava no banco
sendo que da forma que estava o á chegava no banco á
entao mantive todas paginas com ISO e a pagina que recebe e grava, joguei o Session.Codepage = 65001 sem UTF, apenas com Session.Codepage
dessa forma funcionou, os acentos estao corretos
a minha duvida é o motivo do erro nos acentos…
e se essa nao seria uma saida paliativa para solucionar um problema que pode estar em outra parte
obrigado
[]s
Obrigado pela citação. Apenas usei uma dica que achei na WEB.