Portada » Lenguaje PHP » Asignar codificación UTF-8 con MySQLi PHP

Asignar codificación UTF-8 con MySQLi PHP

Asignar codificación utf-8 con MySQLi PHP. Cuando estamos desarrollando sistemas suele presentarse este tipo de inconvenientes a la hora de mostrar resultados de la base de datos.

Es decir, las tildes, las enes, comillas, etc. Suelen convertirse en caracteres especiales. Por lo tanto, esto deforma nuestra información, causando molestias por parte del usuario.

Asignar codificación utf-8 con MySQLi PHP

En este artículo veremos cómo corregir errores en los textos extraídos de una tabla en MySQL.

¿Que ocasiona este inconveniente de caracteres especiales?

  • Por ejemplo, que la información lo estés guardando en otro conjunto de caracteres que no es UTF8.
  • En el fichero de conexión no asignamos la codificación UTF8

¿Cómo solucionar estos inconvenientes con los caracteres especiales?

  • Primero: Asignar el cotejamiento UTF8 en la base de datos.
  • Segundo: Asignar cotejamiento UTF8 en las tablas y columnas.
  • Tercero: Asignar el conjunto de caracteres UTF8 en nuestro archivo de conexión con la base de datos.

Si deseamos obtener los textos sin estos problemas tenemos que asignar correctamente el cotejamiento para poder manipularlos correctamente si por alguna razón usamos un CRUD.

Si bien en HTML5 podemos asignar el UTF8, esto no influye en los resultados MySQL. Por lo tanto, la recomendación es trabajar con UTF8 tanto en la base de datos como en los ficheros PHP.

¿Qué tipo de conexión MySQL puedo aplicar este código?

Para este ejemplo hemos optimizado la conexión MySQLi

$mysqli = new mysqli(hostname, usuario, password, basedatos);

¿En qué momento aplicar este código?

Básicamente podemos aplicar cuando el resultado de nuestra base de datos nos da unos caracteres especiales, dificultando la lectura y la estética de nuestra página o proyecto web. Veamos un ejemplo.

Resultado MySQL con errores UTF8
Resultado MySQL con errores UTF8

PASOS PARA CORREGIR EL ERROR DE CARACTERES ESPECIALES

A continuación, veremos una serie de pasos para lograr quitar esos caracteres especiales a nuestros resultados MySQL.

  • Lo primero que tenemos es editar nuestro archivo de conexión con la base de datos: Por ejemplo, este archivo tiene por nombre: conexion.php
  • Dentro del fichero podemos encontrar algo similar a esto.
$servidor= "localhost";
$usuario= "root";
$password = "";
$nombreBD= "php_buscador";
$db = new mysqli($servidor, $usuario, $password, $nombreBD);
if ($db->connect_error) {
    die("la conexión ha fallado: " . $db->connect_error);
}

Para que la conexión y las consultas muestren resultados con codificación UTF-8 solo tenemos que insertar el siguiente código debajo de la última condicional IF.

a) Aplicando condicional IF

if (!$db->set_charset("utf8")) {// Condicional para asignar utf-8
       die("Error mostrando el conjunto de caracteres utf8");
}

De esta manera cualquier resultado que emita nuestra base de datos estarán con sus respectivas tildes, eñes, etc. Por lo tanto, esto mantendrá una correcta legibilidad por parte del usuario final.

b) Usando condicional IF ELSE

if (!$db->set_charset("utf8")) {
    printf("Error al cargar el conjunto de caracteres utf8: %s\n", $db->error);
    exit();
} else {
    printf("Conjunto de caracteres actual: %s\n", $db->character_set_name());
}

Una vez aplicado el siguiente script nuestros resultados MySQL se verán de la siguiente forma:

Resultado MySQL aplicando UTF8
Resultado MySQL aplicando UTF8

Si observan la imagen los caracteres especiales han desaparecido de los resultados PHP con MySQL.

ESTRUCTURA COMPLETA DEL EJEMPLO

A continuación, mostraremos un ejemplo completo para aplicar UTF8 en nuestro fichero de conexión.

<?php
$servidor= "localhost";
$usuario= "root";
$password = "";
$nombreBD= "php_buscador";
$db = new mysqli($servidor, $usuario, $password, $nombreBD);
if ($db->connect_error) {
    die("la conexión ha fallado: " . $db->connect_error);
}

if (!$db->set_charset("utf8")) {
    printf("Error al cargar el conjunto de caracteres utf8: %s\n", $db->error);
    exit();
} else {
    printf("Conjunto de caracteres actual: %s\n", $db->character_set_name());
}

?>
Asignar codificación UTF-8 con MySQLi PHP
Asignar codificación UTF-8 con MySQLi PHP

CONCLUSIÓN

  • Su uso es muy recomendado para poder controlar esas molestias de caracteres especiales en nuestros textos. Si tienen problemas similares no duden en aplicar este script.
  • Gracias por leerme y no se olviden de comentar ante cualquier inquietud.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

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

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad