Este es un problema con el que alguna vez tendremos que encontrarnos cuando al desplegar alguna pagina se pierden los acentos y caracteres especiales, por ejemplo las ñ.

Ejemplo :

avión -> avión
jugará -> jugará
jugón -> jugón

Pasa resolver esto solo debemos escribir esto al principio del archivo para cambiar el charset de la pagina obiamente con php

header('Content-Type: text/html; charset=iso-8859-1');

Espero les sea util.
Espero sus comentarios

34 Respuestas para “PHP acentos y caracteres especiales”

  1. Dante Robles
    desde Mexico Dijo:

    Pues si Wama si resulto util y bastante por cierto

    Saludos

    Dante

    Responder

  2. bxxx
    desde Guatemala Dijo:

    Excelente aporte compañero, fue de mucha ayuda ya que cuando genera tablas en Mysql no contempla los problemas que pueden generar al mostrar los datos, felicitaciones.

    Responder

  3. ishoka
    desde Dijo:

    Tengo una página que manda a otra página datos de registro..
    Por ejemplo nombre.

    Si este nombre es
    Acán me manda Acán.

    com lo puedo solucionar??

    Gracias…

    Responder

    Seba Alberoni June 21st, 2010 7:49 pm

    Seba Alberoni desde Argentina Dijo:

    tuve un problema similar, prueba con $nuevoTexto = utf8_decode($viejoTexto);
    Saludos!

    Responder

  4. Jorge Sandoval
    desde Mexico Dijo:

    Muy buen aporte! Muchas gracias

    Responder

  5. by mafuen
    desde Chile Dijo:

    para que despues del freads aparezcan los acentos y caracteres especiales:
    $linea=htmlentities($linea);

    saludos..
    by mafuen

    Responder

    Gines November 23rd, 2012 4:00 am

    Gines desde Spain Dijo:

    Gracias mafuen, me sirvió perfecto.

    Responder

  6. GERARDO BERMUDEZ
    desde Mexico Dijo:

    gracias es el unico metodo que me ha servido esta muy bueno tu aporte

    Responder

  7. Marco Antonio
    desde Mexico Dijo:

    Excelente, ya estaba por comenzar a crear una funcion en php, o mas bien investigar com ohacerla gracias, me ha sido de gran ayuda

    Responder

  8. eddy
    desde Chile Dijo:

    Excelente aporte compañero. Eso sí, se les llama tildes, ya que todas la palabras tienen acento. Gracias!

    Responder

  9. Anibal
    desde Dijo:

    Buenísimo! Estuve buscando una solución por varios sitios, pero esta es perfecta! Gracias

    Responder

  10. Lio Nani
    desde Cuba Dijo:

    Hola manito..llevo todo el día buscando como arreglar el problema con las tildes..y cuando vi tu escrito, todo estubo gennial…gracias de veras…

    Salu2 Lio nani

    Responder

  11. andlinux
    desde Dijo:

    sabes loco todos te felicitan ………y yo tambien …
    mira loco me puedes ayudar estoy haciendo una pagina web para una empresa y necesito que algien me ayude con php y mysql te cuento ya tengo todo los formularios: index.html, alfa.php, carpetas xml,drawpage en donde el codigo esta en php, pero me falta algo mas importante: conexion de php a mysql y formulario xml o html de login para entrar a una tabla digamos asi pero como admino como me puedes explicar o me puede mandar codigo por favor .
    yo creo que me pase con tantas preguntas pero eso sera la primera vez soy novato en esto de php y mysql

    Responder

  12. cecilia
    desde Mexico Dijo:

    HOLA TENGO UN PROBLEMA YA

    HOLA
    TENGO UN PROBLEMA YA INTENTE DE TODO MI JEFE DICE QUE ME HACE FALTA SOLO UNA COSA

    ESTOY TRABAJANDO CON PHP Y POSTGRESQL
    EL PROBLEMA ES QUE NO PUEDO TRABAJR CON LOS ACENTOS
    EN POSTGRES SI LOS MUESTRA BIEN PERO EN EL NAVEGADOR
    SALEN ? CON UTF8, UN SIGNO RARO CON LATIN1 O ISO 8859-1
    EN POSTGRES OCUPO ENCODING LATIN2

    HIZE UNA PRUEBA CON ECHO ‘àrbol’ y si sale en el navegador acentuada pero lo que recupera de la base de datos sale con signos

    ayuda de vdd ya hize muchos intentos
    descomente lo de php.ini, cambie el encoding y nada, si alguien sabe que me falta se lo agradecere muchoo!!

    Responder

  13. jjcarrizo
    desde Argentina Dijo:

    gracias………….

    Responder

  14. Damian
    desde Argentina Dijo:

    Cuando dices escribir esto: header(‘Content-Type: text/html; charset=iso-8859-1′); al principio del archivo te refieres dentro del bloque porque así lo hice al principio de cada página y todo sigue igual.
    Te cuento que dentro de la etiqueta tengo
    Esto debería sacarlo? o ahí debería remplazar el “charset=utf-8″ por “charset=iso-8859-1″.
    Gracias y espero su ayuda, ya que sigue mostrando caracteres raros en vez de los acentos.

    Responder

    Daniel November 14th, 2011 11:57 am

    Daniel desde Dijo:

    Ese párrafo se redacta dentro de un bloke PHP:

    Responder

  15. Damian
    desde Argentina Dijo:

    Bueno no salió lo que puse. Repito el mensaje:

    Cuando dices escribir esto: header(‘Content-Type: text/html; charset=iso-8859-1′); al principio del archivo te refieres dentro del bloque de php?, porque así lo hice al principio de cada página y todo sigue igual.
    Te cuento que dentro de la etiqueta tengo:
    “”
    Esto debería sacarlo? o ahí debería remplazar el “charset=utf-8″ por “charset=iso-8859-1″.
    Gracias y espero su ayuda, ya que sigue mostrando caracteres raros en vez de los acentos.

    Responder

  16. Joel
    desde Venezuela Dijo:

    gracias Damian tu respuesta me dio un buen resultado me saco todos los caracteres especiales gracias de nuevo

    Responder

  17. carlos
    desde Mexico Dijo:

    $linea=htmlentities($linea);

    realmente funciona tenia un problemita qeu no me mostraba las tildes despues de la consulta a la bd y con esto lo solucione ejemplo:

    while ($fila =mysql_fetch_object($result)){
    $idcategoria = $fila->idcategoria;

    $titulo=$fila->titulo;
    $titulo=htmlentities($titulo);

    $descripcion=$fila->descripcion;
    $descripcion=htmlentities($descripcion);//aqui reasigno la variable pero mostrando las tildes..y si funcionaaa..

    Responder

  18. Boris
    desde Mexico Dijo:

    Muchas gracias Men, me has salvado

    Responder

  19. wayne5x
    desde Mexico Dijo:

    muchas gracias, si funciona, eres un master ;-)

    Responder

  20. igor
    desde Chile Dijo:

    otra forma seria realizando clases…
    class CaracteresEspeciales{
    public function acentos($cadena){
    $traduce=array( ‘á’ => ‘á’ , ‘é’ => ‘é’ , ‘í’ => ‘í’ ,
    ‘ó’ => ‘ó’ , ‘ú’ => ‘ú’ , ‘ñ’ => ‘&ntilde’ ,
    ‘Á’ => ‘Á’ , ‘É’ => ‘É’ , ‘Í’ => ‘Í’ ,
    ‘Ó’ => ‘Ó’ , ‘Ú’ => ‘Ú’ , ‘Ñ’ => ‘Ñ’ ,
    ‘à’ => ‘à’ , ‘è’ => ‘è’ , ‘ì’ => ‘ì’ ,
    ‘ò’ => ‘ò’ , ‘ù’ => ‘ù’ , ‘À’ => ‘À’ ,
    ‘È’ => ‘È’ , ‘Ì’ => ‘Ì’ , ‘Ò’ => ‘Ò’ ,
    ‘Ù’ => ‘Ù’ , ‘ä’ => ‘ä’ , ‘ë’ => ‘ë’ ,
    ‘ï’ => ‘ï’ , ‘ö’ => ‘ö’ , ‘ü’ => ‘ü’ ,
    ‘Ä’ => ‘Ä’ , ‘Ë’ => ‘Ë’ , ‘Ï’ => ‘Ï’ ,
    ‘Ö’ => ‘Ö’ , ‘Ü’ => ‘Ü’ , ‘â’ => ‘ä’ ,
    ‘ê’ => ‘ë’ , ‘î’ => ‘ï’ , ‘ô’ => ‘ö’ ,
    ‘û’ => ‘ü’ , ‘Â’ => ‘Ä’ , ‘Ê’ => ‘Ë’ ,
    ‘Î’ => ‘Ï’ , ‘Ô’ => ‘Ö’ , ‘Û’ => ‘Ü’ );
    //puedes colocar los caracteres que quieras
    $reemplazar=strtr($cadena,$traduce);
    return $reemplazar;
    }
    //para mostrar
    $car=new CaracteresEspeciales();
    $mensaje=”Á á è íóú Ú”;
    $mostrar=htmlentities($car->acentos($mensaje));
    echo html_entity_decode($mostrar);

    }

    Responder

  21. Luis
    desde Dijo:

    Buenaso el utf8_decode, gracias man.

    Responder

  22. cHRISTIAN
    desde Peru Dijo:

    Maestro m rindo a tus pies, excelente codigo m salvo gracias….

    Responder

  23. Antzo Loren
    desde Spain Dijo:

    Muchas gracias por la información, no sabia que podias enviar através de header la codificación de carácteres. En mi caso me funcionó con la codificación que uso utf-8 usando:

    header(‘Content-Type: text/html; charset=utf-8′);

    Responder

  24. Luis
    desde Dijo:

    Exelente man!
    funciona perfecto

    Responder

  25. mikell242
    desde Spain Dijo:

    Como agradecerte este pequeño código que me ha salvado de quedar mal con un cliente por no poder formatear sus acentos, jjejje muchas gracias amigo/a, volveré.

    Responder

  26. Oscar
    desde United States Dijo:

    Gracias por la ayuda! Bien sencillo de entender.. Saludos desde Miami!

    Responder

  27. Rodrigo Morales
    desde Uruguay Dijo:

    Buenisimo, la verdad te pasaste.Yo estaba por hacer la función también jeje.
    Saludos desde Uruguay !!

    Responder

  28. jesus
    desde Spain Dijo:

    pues a mi no me funciona que quereis que os diga

    Responder

  29. latinmau
    desde Dijo:

    Tengo una base de datos postgresql, trato de presentar en PHP pero ni el UTF8_decode no sirva para unos caracteres raros que almacenan en la base de datos >= puesto como un solo caracter… o <= puesto como un solo caracter… el UTF8_decode me representa como un signo de interrogacion..
    asi de simple. Aun no hallo solucion para mi problema.. ya voy tres dias intentando varias formas.. y nada… no se que usar.. ni siquiera el mb_convert_encoding me sirve aun.

    Responder

  30. Raymundo Ceron
    desde Dijo:

    muy buen aporte me resolvio el problema muy rápido gracias!!!!!

    Responder

  31. chelo
    desde Dijo:

    Eres un duro funciona de mil maravillas gracias

    Responder

Responder