Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ozzyvegeta

Caracteres estranhos usando AJAX e ASP

Recommended Posts

Olá,

 

Estou a um certo tempo tentando da um jeito nesse problema,

ja fiz de td q tinha q faze, pesquisei na web , encontrei soluções, mas nenhuma delas deu certo...

 

 

Acontece q quando eu faço uma requisição por ajax passando caracteres do tipo, "ç" "á" "ê" e entre outros acentuados, o asp recupera esses valores de forma estranha, o "ç" sempre vem desta forma "ç"...mas o estranho é q ele exibe de forma certa, soh quando eu gravo isso em algum bd ou mando exibir o LEN() da string ele retorna 2 ao invez de 1, afinal eu digitei um soh caracter ("ç"), ou seja, o asp retorna aquele caracter estranho, mas na hora de exibir vem certo.

 

Bom, já não sei mais uq fazer, as soluções que tentei:

 

- Estou enviando via POST, detalhe, via GET funciona, e ao fazer isso eu codifico o envio usando a função encodeURI()

 

var pars = 'Descript=' + encodeURI(document.getElementById("txtDescrip").value);

- no AJAX atribui o header do envio como:

 

http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;");http_request.setRequestHeader("Content-length", p.length);http_request.setRequestHeader("charset","ISO-8859-1");//Atribui o mesmo no encodinghttp_request.setRequestHeader("Encoding","ISO-8859-1");

- no ASP recebo esse envio da seguinte forma:

 

<%	Response.Charset="ISO-8859-1"	if (Request.Form("Descript")<>"") then		'**************GRAVAM NO BANCO DE DADOS (naum exibi por ser grande**********************'		response.Write " TEXTO DIGITADO:	 " & Request.Form("Descript")		response.Write " NUM. CARACTERES  : " & len(Request.Form("Descript"))		response.End	end if%>

 

Como dito, no response.write o "ç" é exibido, mas na função LEN() ele vem 2 caracteres e quando gravo no banco de dados é gravado errado (aquele char acima), já tentei usar o metodo de resgatar esse valor via

 

"SourceData = Request.BinaryRead(Request.Totalbytes)" e segue o codigo ...

 

MAS, tb não funciono...imagino que o AJAX esteja enviando errado esse valor, ou o asp, ou talvez o servidor, esteja recebendo do ajax de forma errada...

 

JA TENTEI TB, retirar a função encodeURI() e NADA...

 

 

bom, já não sei mais uq faze...ja fiz td, ou não né...rs

 

mas se alguem aee tiver alguma soluçõ pra isso ficaria muitoooooooo agradecido...rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso é tipico de encoding UTF-8Resumindo uma longa historia, o utf-8 transcreve TODOS os caracteres unicode (umas dezenas de milhares) em um numero variável de bytes. Os caracteres ascii são escritos com um byte. Os acentuados (cedilha, agudo, circunflexo, etc) com 2. Alguns caracteres oritentais são escritos com 3 ou 4 bytes. A vantagem do utf-8 em relação ao iso-8859-1 é o fato de que o iso só trancreve os caracteres latinos e o utf-8 todos os caracteres do mundo.Mas voltando ao seu problema, os dados estão escritos em utf-8 em algum lugar. Veja onde está acontecendo isso ou, pegue os dados como utf-8 ué :)http_request.setRequestHeader("charset","UTF-8");http_request.setRequestHeader("Encoding","UTF-8");

Compartilhar este post


Link para o post
Compartilhar em outros sites

i ai ricardo, antes de td..vlw por responde .. heheheintaum cara...já tentei de td...rsrs..inclusive mudar o encoding e o charset, tanto no asp quando no ajax, ou seja, quem emite ta com esses atributos (ajax) e quem recebe tb (asp), mas ele continua vindo errado, o "ç" quando eh retornado ele vem com essa codificação "%C3%A7", quando você diz 2 bytes, você que dizer isso?? pq uma coisa eu consegui, usando a função escape() ao invez da encondURI() funciona (pelo menos o problema deu pra resovle) mas a questão é, em td lugar usa encodeURI e funciona, aqui não, por isso quero sb o motivo...e a escape envia assim "%E7" e funciona certinho....seria esse 1 byte??mas intaum... o problema foi resolvido, mas fica ai a questao, com você, qual seria a codificação usando encodeURI para o caracter "ç"??tipo, queria sb pq descodificando isso com a ideia char(clng(HEX)) da aquele valor acima "ç" sendo que era pra sai o "ç" descodificado, mas claro não sai pq esse valor que vem não eh equivalente ao "ç" da tabela ascii...vlwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.