Lenguaje PHP

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.

Para el tema de las tildes y eñes con base de datos hay que ver 3 detalles que debemos de configurar.

Revisar el fichero de conexión con MySQL

Generalmente se debe declarar la conexión con UTF8, veamos un ejemplo:
// 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 )

La base de datos, las tablas y las columnas de tipo texto debe de tener este cotejamiento para que acepte las tildes sin problemas.
utf8mb4_unicode_ci usa el Algoritmo de clasificación Unicode como se define en los estándares Unicode.
Solución para las tildes y eñes
Solución para las tildes y eñes

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.

Cambiar tipo de codificacion de archivo UTF-8
Cambiar tipo de codificacion de archivo UTF-8

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.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

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

Botón volver arriba