Acentos y caracteres especiales con Ajax y JQuery

Categorías: JQuery - Tags: ,

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

1
2
3
<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.

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

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

UPDATE: SEGUNDA PARTE

Acerca del autor

Damian

Programador en tiempos libres , amante de la tecnología, blogger amateur y emprendedor en sueños.

Más Posts de Damian - Web

Sigueme:
TwitterFacebookLinkedIn

20 Respuestas a “Acentos y caracteres especiales con Ajax y JQuery”

  1. Isaac dice:

    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 dice:

    Muchas gracias!

  3. Albert dice:

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

  4. Portilla dice:

    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 dice:

    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 dice:

    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 dice:

    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 dice:

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

  13. daronwolff dice:

    MUCHISIISISISISMAS GRACIAS SALVASTE LA VIDA!

  14. Jorge dice:

    Muy bueno, Muchas gracias. Simple y efectivo!

  15. Carlos Leiva dice:

    Muchas gracias compa!!! uhhh, he buscado como loco y nada me había funcionado, te agradezco inmensamente el aporte. Saludos!

  16. Neochange dice:

    Fácil y conciso, gran aporte! muchas gracias

  17. Antonio Valle dice:

    Excelete el aporte principalmente si deseas realizar consultas con caraceres especiales, ya me ahorre un dolor de cabez con esta funcion utf8_decode(); , excelente =)

  18. Juan Carlos dice:

    Gracias por la aportación, solución rápida, efectiva y sin complicaciones a la hora de implementarla.

  19. Juan Carlos dice:

    Este cógigo va genial si se utiliza para insertar un registro en una base de datos, pero si se quiere por ejemplo mostrar los resultados en una búsqueda, los resultados te los muestra con caractére raros (ñ acentos, ª, etc.).

    Para solucionarlo, además de lo comentado al principio de este post, solo hay que poner en el PHP, ANTES DE LA CONEXIÓN, en la primera línea del archivo que es llamado por ajax:
    <? header("Content-Type: text/plain; charset=ISO-8859-1"); ?>

    Y ya está, te muestra todo OK.

Deja un comentario