MySQL UTF–8 es un formato estándar para almacenar caracteres Unicode. UTF–8 utiliza una secuencia única de 1, 2, 3 bytes para codificar cada carácter en el juego de caracteres Unicode.
MySQL utf8mb4 significa que
usa un máximo de 4 bytes por carácter, soportando carácteres suplementarios.
- Con la llegada de MySQL 8 se está mejorando el rendimiento de utf8mb4 y será establecido como conjunto de caracteres predeterminado.
Para entender más sobre el tema, nos vamos a situar en un problema real donde necesitamos instalar una aplicación. La aplicación que estamos instalando es Moodle, que es una herramienta de Gestión de Aprendizaje Online.
Cuando el programa procede a pedirnos los requerimientos de nuestra base de datos, se nos avisa de que es obligatorio un juego de caracteres utf8md4
. La razón es porqué Moodle usa símbolos Unicode para guardar emojis y estos exceden el espacio máximo por carácter establecido por la codificación Utf8.
Cada emoji
se compone de 4 bytes (xF0x9Fx98x89) y estos exceden el tamaño máximo por carácter de 3 bytes de la codificación Utf8.
Conclusión: Todos los usuarios de MySQL y MariaDB que están utilizando actualmente “utf8” deberían utilizar “utf8mb4”. Nadie debería usar “utf8”.