Solución para las tildes y eñes PHP MYSQL
Solución para las tildes y eñes PHP MYSQL. En algunas ocasiones los caracteres especiales del idioma español pueden resultar un dolor de cabeza a la hora de realizar consultas en la base de datos Mysql. Si utilizas PHP como conexión ya en algún momento debes haber tenido este tipo de inconveniente y quizás aún no.
Solución para las tildes y eñes PHP MYSQL
Escribir en español con «eñes» y tildes es muy fácil llenar los formularios con tildes y eñes, pero cuando te devuelve unos caracteres medios raros ahí viene el detalle, para evitar todo ello debes tener un CHARSET y una COLLATION que lo permitan.
Yo uso charset utf8 en los archivos PHP y HTML y collation utf8_general_ci en MYSQL, pero seguro que lo logras con el CHARSET latin1 y la collation latin1_spanish_ci. No puedes aplicar a las tablas y a los campos una collation que no tenga nada que ver con el charset elegido.
Pero este no es el único problema en tu página. También tienes que hacer que se entiendan tu servidor web APACHE y tu base de datos (MYSQL). Por otro lado, es importante que los datos que muestras de tu base de datos, los visualizas en un archivo PHP o HTML, todo tiene que ser relativo, si eliges UTF8, tu navegador debe tener seleccionado un tipo de letra utf8.
Solución para las tildes y eñes PHP MYSQL
HTML CHARSET
<html><head> <meta charset="UTF-8"> </head> <body> </body> </html>
PHP
<?php header('Content-Type: text/html; charset=UTF-8'); ?>
En las consultas de PHP con MYSQL
Les comento si has elegido un charset y su cotejamiento (collation) adecuado para el español, el detalle seria comunicar a tu servidor de esto, pues creo que trabaja por defecto con ISO-8859-1.
Además con unos meta que indiquen el charset y guardando los archivos php y html como utf8, en caso de que sea ese el charset elegido, se resolverá parte del problema.
Al realizar la conexion, inmediatamente despues realiza esta consulta
mysql_query("SET NAMES 'utf8'",$conexion);
o en caso que uses mysqli
mysqli_query("SET NAMES 'utf8'",$conexion);
Pasos para solucionar las tildes y eñes.
Revisar el fichero de conexión con MySQL
// conexión a la base de datos function connect(){ return new mysqli("localhost","USER","PASSWORD","BASE_DE_DATOS"); } $con = connect(); // AGREGANDO CHARSET UTF8 if (!$con->set_charset("utf8")) { printf("Error al cargar el conjunto de caracteres utf8: %s\n", $con->error); exit(); } else { printf("Conjunto de caracteres actual: %s\n", $db->character_set_name()); }
La base de datos: cotejamiento ( utf8mb4_unicode_ci )
utf8mb4_unicode_ci usa el Algoritmo de clasificación Unicode como se define en los estándares Unicode.
Modificar los archivos (último paso)
A veces no es necesario, pero me ha pasado y ya lo he visto en proyectos anteriores.
Los archivos que interactúan con MySQL para devolver la información debe tener como tipo de archivo UTF8 (Esto se puede cambiar al editar el archivo con cPanel).
Veamos un ejemplo.
Cuando un fichero por más que hemos realizado los dos pasos anteriores en MySQL y sigue mostrando caracteres especiales. Sin embargo, ya por ultimo debemos de corregir el tipo de codificación de carácter para el fichero.
- Editar el fichero
- Eligir el tipo de codificación UTF-8
- Luego guardar el fichero.
Con esto nuestro fichero tendrá el tipo UTF-8 y el problema se habrá resuelto.
Conclusión
Con este artículo hemos aprendido a dar solución a los problemas con las tildes y «ñ» (eñes) cuando trabajamos con base de datos (MySQL).
Hemos presentado 3 configuraciones para no tener estos inconvenientes con los caracteres especiales en la web.
Espero que estos ejemplos les ayude en sus proyectos webs, cualquier duda pueden escribir en los comentarios.