Acentos y caracteres especiales con Ajax y JQuery
Publicado en May 26, 2009 by Damian
Unos de mis primeros problemas al usar jquery.forms o $.Ajax era que los acentos ,la ñ , etc no eran ingresados correctamente en la base de datos y por lo tanto no se mostraban correctamente en mis programas y por lo general aparecian como cuadraditos o rombos negros con un signo de interrogación adentro.
Algunos de los caracteres afectados:
Una forma simple para solucionar esto es hacer lo siguiente:
En el formulario agregar accept-charset=”utf-8“
<input type="input" name="nombre"/>
</form>
Y a la hora de recibir el dato ya sea mediante $_POST o $_GET tenemos que hacer un utf8_decode() y ya estará listo el valor para ingresar en la base de datos.
Con este método JQuery ya no me da problemas con los caracteres especiales. Saludos!!!
UPDATE: SEGUNDA PARTE


Con tu lector preferido.
Via Email.
Por Twitter.
wow! muchisimas gracias! este post es justo lo que necesitaba! no te imaginas cuanto pelee con el jquery para que se ingresara correctamente los caracteres, pase horas en esto! pero gracias a este tip que posteaste me funciona a la perfeccion! gracias!
Muchas gracias!
¡¡ Gracias !! Llevo días peleandome con este problema jeje.
Yo tuve el mismo problema y lo solución que se muestra aquí esta buenísima, sin embargo, tengo un problema que no se resulve con esto, cuando envió a través de AJAX una cadena que contiene por ejemplo signos matemáticos como (+,-,etc) no me los escribes en la base de datos, y me está enviado en su posición una caratcer vacío. Si alguien ha tenido el mismo problema y me podría ayudar sería muy bueno
Si tenemos la base de datos en unicode que es lo que toca, no es necesario hacer el utf8decode
Y cuando respondamos con texto desde php a una petición ajax, antes de hacer el echo, hay que enviar una cabecera con la codificacion utf-8 :
header('Content-type:text/html; charset=UTF-8');
Para el problema de los signos más y menos puedes usar url_decode o raw_url_decode
Vaya, después de liarme con muchos foros y blogs llego aquí y me depejás todo, ya puedo ir a dormir tranquilo.
Venga que sos un chingon.
Gracias.
Uauhhh!!! Pero que bien explicado y con qué claridad!.
Mi enhorabuena!. Muchas gracias por compartirlo.
[...] un tiempo escribí un post acerca de los acentos y caracteres especiales con AJAX y JQuery que explicaba como salvar este problema en los formularios enviados por [...]
Siento poner aquí el código pero estoy dandome de cabezazos contra él y no veo nada diferente a lo que habeis indicado aquí:
prueba AJAX con JQuery y ASP
function AJAX_con_JQuery_y_ASP ()
{
$.ajaxSetup({
beforeSend: function(xhr) {
try{xhr.overrideMimeType("text/html; charset=iso-8859-1");} //FF & Chrome
catch(e) {xhr.setRequestHeader("Content-Type","text/html; charset=iso-8859-1");} //IE8
}
});
$.ajax({
type: "POST",
url: "AJAX_con_JQuery_y_ASP.asp",
data: $("form[name=formPrueba]").serialize(),
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",
success: function(responseText) {$("#ResponseAJAX").html(responseText);}
})
}
junto con el asp:
Texto enviado por AJAX:
Gracias por vuestra paciencia,
Saludos,
Ernesto.
Hola ernesto, que error te da? Miraste la consola de firebug?
Hola Damian,
antes de nada comentar que el anterior post está incompleto ya que, me imagino que por temas de seguridad, ha obviado texto.
En realidad no me da error sino que no consigo enviar carácteres especiales a traves de AJAX con JQuery + ASP.
Si tuvierais un ejemplo lo pruebo y así ahorro trabajo.
Gracias,
Ernesto.
[...] utf8_decode lo utilizo porque en mi caso yo envio el formulario por AJAX y por lo tanto el campo de texto que se manda a get_materiales lo tengo codificado en UTF-8 como explico en Acentos y caracteres especiales con Ajax y JQuery. [...]