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

<form id="formulario" action="index.php" accept-charset="utf-8" method="post">
<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.

$usuario=utf8_decode($_POST['nombre`]);

Con este método JQuery ya no me da problemas con los caracteres especiales. Saludos!!!

UPDATE: SEGUNDA PARTE

Comparte este artículo:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • BarraPunto
  • Bitacoras.com
  • email
  • Meneame
  • MySpace
  • Print
  • Technorati
  • Twitter

Links Sponsors

Tags: ,

Categoría: JQuery

Comments (13)

 

  1. Isaac says:

    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!

  2. müller says:

    Muchas gracias!

  3. Albert says:

    ¡¡ Gracias !! Llevo días peleandome con este problema jeje.

  4. Portilla says:

    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

  5. 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');

  6. Para el problema de los signos más y menos puedes usar url_decode o raw_url_decode

  7. Antonio Lavey says:

    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.

  8. dulcineamr says:

    Uauhhh!!! Pero que bien explicado y con qué claridad!.

    Mi enhorabuena!. Muchas gracias por compartirlo.

  9. [...] 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 [...]

  10. Ernesto says:

    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.

  11. Ernesto says:

    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.

  12. [...] 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. [...]

Leave a Reply