Cómo solucionar el problema de ñ y acentos en PHP

Email this to someoneShare on FacebookShare on Google+Share on LinkedInTweet about this on Twitter

Un problema que se nos suele presentar a muchos webmasters cuando programamos en PHP está relacionado con los problemas al mostrar caracteres latinos como la ñ y las letras con acentos.

En muchas ocasiones nos ocurre que al realizar una llamada a los datos procesados interfiere algún tipo de limpiador anti-injecciones de código, que nos genera un cambio en la estructura del texto en un formato diferente al de UTF-8 que es el utilizado para que todos los símbolos y caracteres latinos utilizados sean reconocidos correctamente.

El primer paso para solucionar estos problemas con caracteres latinos es colocar una llamada al inicio con <meta chartset=”utf-8″ /> y verificar que nuestra base de datos tenga la misma configuración. Con esto descartamos que el problema sea de tipo de lectura a nuestro documento.

La causa de estos problemas de caracteres suele estar en la siguiente función, que realiza un ajuste completo de la string y convierte el texto en entidad independiente de HTML. Al realizar este proceso, se convierte a un estilo por defecto que no incluye ñ y acentos. Muy común en sitios que utilizan un CMS (sistema de gestión de contenidos) que llaman datos procesados con esta función:

function limpiarString($string) //función para limpiar strings
   {
      $string = strip_tags($string);
      $string = htmlentities($string);
      return stripslashes($string);
// al ejecutar en mySQL agregar al final mysql_real_escape_string($string);
   }

Por eso si utilizas un CMS es muy probable que tenga la anterior función de limpieza de código, no olvides añadir el siguiente código a la función htmlentities()

$string = htmlentities($string, ENT_QUOTES,'UTF-8');

La explicación del código anterior es que ENT_QUOTES es una propiedad que tiene la función que convierte las comillas ( ” ) y la comilla simple  ( ‘ ). Y el ‘UTF-8’ especifica a la función que el tipo de conjunto de caracteres (charset) que queremos usar es el UTF-8, el cual contiene los caracteres latinos como la ñ y las letras con acentos.

Un comentario

  1. Anusraper dijo:
    24 Mayo, 2013
    Responder

    Excelente aporte! por fin di con el que era gracias hermano

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

De conformidad con lo establecido en la LOPD, Adpv Advertising Provider S.L. garantiza la adopción de las medidas necesarias para asegurar el tratamiento confidencial de los datos de carácter personal. Así mismo le informamos de la inclusión de sus datos en un fichero con la finalidad de mantener su relación negocial o contractual con Adpv Advertising Provider S.L. y de la posibilidad de ejercer los derechos de acceso, rectificación, cancelación y oposición en la siguiente dirección: Ercilla, 26, 1Dcha., 48011, Bilbao, Bizkaia. Privacidad.