Problemas con acentos y ñ’s al trabajar con html, php y mysql
En días anteriores publiqué sobre los problemas con los acentos en javascript. Muchas veces me he encontrado también con el problema de acentos y eñes al guardar datos en mysql mediante php, así que buscando en internet me encontré algunos consejos o tips para lograr que se guarden correctamente tus datos.
Lo primero es asignar cotejamientos correctos al crear tu estructura de datos en mysql, en la creación de la base de datos y sus tablas debemos asignar utf_unicode_ci y en los campos de texto de nuestras tablas, donde tenemos la posibilidad de requerir guardar acentos o eñes asignamos como cotejamiento utf8_spanish_ci.
El siguiente punto es tener en todas nuestras páginas html y php el meta del tipo de contenido con charset utf-8 [html] <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> [/html] Si nuestro documento php recibe petición mediante ajax o es puro código php no olvidemos asignar el tipo de contenido con charset utf-8 con la funcion header() de php [php] header("Content-Type: text/html;charset=utf-8"); [/php] Y la parte más importante (por la que la mayoría hemos sufrido durante mucho tiempo, es asignar a nuestra conexión mysql el charset utf-8, les dejo el ejemplo con PDO que a mi me ha funcionado: [php] try {
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES utf8’,
);
$db = new PDO(‘mysql:host=’ . mysqlhost . ‘;dbname=’ . base_datos . ‘;’, bd_user, bd_pass, $options);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch( PDOException $e ) {
echo "Error de conexion: " . $e->getMessage();
}
return $db; [/php] Aplicando estas recomendaciones ya solo nos queda ser cuidadosos en el uso de las funciones html_entity_decode() y htmlenties()
3 Comments
Fernando
Muchas gracias por la info, me ayudo bastante!
Alexander
Gracias, me ayudaste mucho ya que ese problema no lo lograba resolver.
José
Te la comiste man!
Muchas gracias por el dato!