Ir para conteúdo

POWERED BY:

Arquivado

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

rafa-martin

tratando caracteres especiais

Recommended Posts

pessoal. eu estou tendo um problema com caracteres especiais no ajax. bom estou inserindo os dados no banco access. e quando clico em gravar eu resgato o que foi digitado no campo nome. depois imprimo na tela o q foi digitado.

Se eu digitar ç, por exemplo, quando eu imprimo isso na tela, vem exatamente da forma q foi digitado no campo texto. Agora se eu clicar em gravar, esse campo nome vai para o banco com caracteres especiais.

agora se eu der um response.write na minha string de inserção e executar no banco, vai sem os caracteres especiais.

 

só q na minha função ajax já está fazendo isso, vejam o econdig q faço. está em vermlho

 

function recuperarCarro(nome, telefone, id)

{

// criacao do objeto XMLHTTP

var oHTTPRequest = createXMLHTTP();

// Abrindo a solicitacao HTTP. o primeiro parametro informa o metodo post/get

// o segundo parametro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc

// o terceiro parametro informa que a solicitacao nao assincrona,

// para solicitacao sincrona o parametro deve ser false

oHTTPRequest.open("post", "insere.asp", true);

// para solicitacoes utilizando o metodo post deve ser acrescentado

// este cabecalho HTTP

oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

//oHTTPRequest.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");

//oHTTPRequest.setRequestHeader("Content-Type", "text/xml");

oHTTPRequest.setRequestHeader("encoding", "ISO-8859-1");

// a funcao abaixo e executada sempre que o estado do objeto muda (onreadystatechange)

oHTTPRequest.onreadystatechange=function() {

// o valor 4 significa que o objeto ja completou a solicitacao

if (oHTTPRequest.readyState==4){

ret = oHTTPRequest.ResponseText;

// abaixo o texto do gerado no arquivo executa.asp e colocado no div

//alert(ret);

formulario.id.value = ret;

//document.all.divCarros.innerHTML = oHTTPRequest.responseText;

}

}

// abaixo e enviada a solicitacao. Note que a configuracao

// do evento onreadystatechange deve ser feita antes do send.

oHTTPRequest.send("nome=" + formulario.nome.value + "&telefone="+formulario.telefone.value + "&id="+formulario.id.value);

}

 

 

o pior que já procurei na net e todos é da forma q estou usando. pq está indo com caracteres especiais? qual o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra mas eu já fiz isso:kra todos esse problemas de inserir eu já resolvi, dessa forma:function recuperarCarro(nome, telefone, id){// criacao do objeto XMLHTTPvar oHTTPRequest = createXMLHTTP(); // Abrindo a solicitacao HTTP. o primeiro parametro informa o metodo post/get// o segundo parametro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc// o terceiro parametro informa que a solicitacao nao assincrona, // para solicitacao sincrona o parametro deve ser falseoHTTPRequest.open("post", "insere.asp", true);// para solicitacoes utilizando o metodo post deve ser acrescentado // este cabecalho HTTPoHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");oHTTPRequest.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");oHTTPRequest.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");oHTTPRequest.setRequestHeader("Pragma", "no-cache");//oHTTPRequest.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");//oHTTPRequest.setRequestHeader("Content-Type", "text/xml"); oHTTPRequest.setRequestHeader("encoding", "ISO-8859-1"); // a funcao abaixo e executada sempre que o estado do objeto muda (onreadystatechange)oHTTPRequest.onreadystatechange=function() {// o valor 4 significa que o objeto ja completou a solicitacaoif (oHTTPRequest.readyState==4){ret = oHTTPRequest.ResponseText; // abaixo o texto do gerado no arquivo executa.asp e colocado no div//alert(ret);formulario.id.value = ret;//document.all.divCarros.innerHTML = oHTTPRequest.responseText;}}// abaixo e enviada a solicitacao. Note que a configuracao// do evento onreadystatechange deve ser feita antes do send.oHTTPRequest.send("nome=" + formulario.nome.value + "&telefone="+formulario.telefone.value + "&id="+formulario.id.value);}o meu grande problema agora é a acentuação. Olha o que acontece.quando eu dgito por exemplo no campo nome ç. Quando mando gravar o campo nome no banco vai dessa forma ççç.só que quando dou um reponse.write sql nesse kra :sql = "insert into cadastro(nome, telefone)values('" & nome & "', '" & telefone & "') " eu executo isso no banco de dados e cadastra o ç certinho, sem problema.agora veja que eu faço isso no ajax: oHTTPRequest.setRequestHeader("encoding", "ISO-8859-1"); agora se eu colocar essa linha //oHTTPRequest.setRequestHeader("Content-Type", "text/xml"); e tirar a de cima os qu eu digitei nos campos não vai para o banco mais o id é gerado.e no arquivo asp eu já coloquei <% Response.Charset="ISO-8859-1" %> e mesmo assim nadapq? qual o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lá no post que eu te indiquei também há exemplos de caras que tiveram problemas com banco de dados e resolveram, leia o post até o final.Ah, e outra coisa, quando voce abre o banco e olha o conteúdo, como é que o cedilha está guardado lá? Está guardado como "ç" ou como "ç".Se estiver como "ç" você não usou as funções de conversão da sua linguagem server-side.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chegado eu estava com este mesmo probleminha, cheguei até a achar seu tópico em busca de solução.

 

Encotrei a solução para este problema.

 

Na minha página onde eu monto a combo, montacombo_nd.asp, devo aplicar a função asp Server.URLEncode nos textos que devemos aplicar a formatação, no caso, estou aplicando nas opções da combo:

<select name="cboDescricaoDaDespesa" id="cboDescricaoDaDespesa" onChange="java script:PITroca(this.value);">	<option value=""><- - Selecione - -></option>	<%while not rsPI.eof %>	<option value="<%=rsPI("CDPlanoInterno")%>"><%=Server.URLEncode(rsPI("DSPLanoInterno"))%></option>	<%rsPI.movenext	wend%></select>
E na minha página principal.asp, na função javascript que executa a combo, devo usar a função unescape() da seguinte maneira:

function comboelementodespesa(){	  var comboEl = createXMLHTTP();	  var strCombo;	  comboEl.open("post", "montacombo_nd.asp", true);	  comboEl.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	  comboEl.onreadystatechange=function(){	  if (comboEl.readyState==4){	  strCombo = unescape(comboEl.responseText);	  strCombo = strCombo.replace(/\+/g," ");	  document.all.divcomboEl.innerHTML = strCombo;}}	  comboEl.send("codplanointerno=" + document.Formulario.txtCodigoPI.value);		}

E zé fini... o problema está resolvido.

 

Atentem que na função .send(), você pode estar fazendo a mesma coisa inversamente, usando escape().

 

Qualquer dúvida, estamos aê.

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.