Foros del Web » Programando para Internet » Javascript » Frameworks JS »

problema con juego de caracteres

Estas en el tema de problema con juego de caracteres en el foro de Frameworks JS en Foros del Web. Tengo un problema y es que con el codigo de abajo los caracteres especiales no se guardan correctamente. Lei que xmlhttprequest solo trabaja correctamente usando ...
  #1 (permalink)  
Antiguo 17/01/2007, 05:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
problema con juego de caracteres

Tengo un problema y es que con el codigo de abajo los caracteres especiales no se guardan correctamente.
Lei que xmlhttprequest solo trabaja correctamente usando UTF-8, es realmente asi? Como hago entonces para hacer trabajar esto con iso-8859-1?
Gracias.


Código:
function objetoAjax(){

  var xmlhttp=false;


  try {

  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

  } catch (e) {

  try {

  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


  } catch (E) {

  xmlhttp = false;

  }

  }

  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {


  xmlhttp = new XMLHttpRequest();

  }

  return xmlhttp;

}


function sendData(){


  divResultado = document.getElementById('hidded');

  name=document.form1.name.value;
  email=document.form1.email.value;
  msg=document.form1.msg.value;    

  //instanciamos el objetoAjax

  ajax=objetoAjax();

  //usando del medoto POST
  //archivo que realizará la operacion

  ajax.open("POST", "contact_proc.php", true);

  ajax.onreadystatechange=function() {

  if (ajax.readyState==4) {

	//mostrar resultado
  	divResultado.innerHTML = ajax.responseText	

  }
  
  }

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

ajax.send("name="+name+"&email="+email+"&msg="+msg)
  
}
  #2 (permalink)  
Antiguo 17/01/2007, 05:47
 
Fecha de Ingreso: diciembre-2006
Mensajes: 25
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: problema con juego de caracteres

Wop!

tienes que hacerlo a la vieja usanza, es decir, sustituyendo acentos, eñes y demás por su representación html
  #3 (permalink)  
Antiguo 17/01/2007, 06:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: problema con juego de caracteres

Entiendo, habrá algo ya hecho por ahí que me puedan recomendar? no manejo practicamente nada de javascript :(
  #4 (permalink)  
Antiguo 17/01/2007, 09:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: problema con juego de caracteres

Igualmente sería un monton de código para tan poca cosa.
No es factible de alguna manera enviar como UTF-8 solamente los datos de ese form?
  #5 (permalink)  
Antiguo 17/01/2007, 09:54
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: problema con juego de caracteres

Utiliza la función escape de javascript para codificar los datos que mandas por POST. Prueba con esto:

ajax.send((escape"name="+name+"&email="+email+"&ms g="+msg));

Luego en el servidor tendrás que descodificarlos como ISO-8859-1 usando alguna función de php. Realmente utilizando POST tus datos irán siempre codificados como UTF-8.
  #6 (permalink)  
Antiguo 17/01/2007, 10:13
Avatar de eberrios  
Fecha de Ingreso: agosto-2004
Ubicación: Chile
Mensajes: 145
Antigüedad: 19 años, 9 meses
Puntos: 1
Re: problema con juego de caracteres

la verdad es que es nada de código prénsalo que letras llevan acentos solo 5 y el otro carácter no conocido es Ñ y la ñ asi que es relativamente censillo pero debes procurar usar la codificación correcta ejemplo

ñ = ñ
Ñ = Ñ

espero que entiendas a que me refiero

saludos
  #7 (permalink)  
Antiguo 17/01/2007, 11:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: problema con juego de caracteres

Cita:
Iniciado por eberrios Ver Mensaje
la verdad es que es nada de código prénsalo que letras llevan acentos solo 5 y el otro carácter no conocido es Ñ y la ñ asi que es relativamente censillo pero debes procurar usar la codificación correcta ejemplo

ñ = ñ
Ñ = Ñ

espero que entiendas a que me refiero

saludos
Entiendo Eberrios, como decia no manejo casi nada de js, por lo que me gustaria encontrar una solucion mas directa si es que la hay.



Cita:
Iniciado por Valkam Ver Mensaje
Utiliza la función escape de javascript para codificar los datos que mandas por POST. Prueba con esto:

ajax.send((escape"name="+name+"&email="+email+"&ms g="+msg));

Luego en el servidor tendrás que descodificarlos como ISO-8859-1 usando alguna función de php. Realmente utilizando POST tus datos irán siempre codificados como UTF-8.
Lo probé, decodificando con esta función: http://www.php.net/manual/es/function.utf8-decode.php

Sin embargo recibo los campos vacios.
Que puede estar fallando?

Nota: hay un pequeño typo, el 2do parentesis va despues de escape, aclaro que ya noté eso para confirmar que no es el problema.
  #8 (permalink)  
Antiguo 17/01/2007, 13:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Re: problema con juego de caracteres

wiii lo consegui

Código:
ajax.send("name="+name+"&email="+email+"&msg="+encodeURIComponent(msg));
EDIT:
Bue no se, ahora veo que no era necesario modificar la parte de ajax, lo unico que hacia falta era decodificar el UTF-8 desde PHP.
cada vez entiendo menos.

Última edición por Finseneu; 17/01/2007 a las 14:43
  #9 (permalink)  
Antiguo 17/01/2007, 17:16
 
Fecha de Ingreso: diciembre-2006
Mensajes: 25
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: problema con juego de caracteres

Cita:
Iniciado por Finseneu Ver Mensaje
Bue no se, ahora veo que no era necesario modificar la parte de ajax, lo unico que hacia falta era decodificar el UTF-8 desde PHP.
cada vez entiendo menos.
Justamente esto es lo que queria decir... tal vez nome expliqué. Cuando te decía "como en los viejos tiempos" es porque a los navegadores antiguos tenías que servirle siempre el contenido codificado ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:48.