utf8mb4_unicode_ci - utf8mb4 mysql
¿Cuál es la diferencia entre utf8mb4 y utf8 charsets en MySQL? (3)
El
utf8mb4
caracteres
utf8mb4
es útil porque hoy en día necesitamos soporte para almacenar no solo caracteres del lenguaje sino también símbolos, emojis recién introducidos, etc.
Una buena lectura sobre cómo admitir Unicode completo en bases de datos MySQL por Mathias Bynens también puede arrojar algo de luz sobre esto.
¿Cuál es la diferencia entre
utf8mb4
y
utf8
en
MySQL
?
Ya sé acerca de las
codificaciones
ASCII
,
UTF-8
,
UTF-16
y
UTF-32
;
pero tengo curiosidad por saber cuál es la diferencia del grupo de codificaciones
utf8mb4
con otros tipos de codificación definidos en
MySQL Server
.
¿Hay algún beneficio / propuesta especial de usar
utf8mb4
lugar de
utf8
?
Tomado del Manual de referencia de MySQL 8.0 :
utf8mb4
: una codificación UTF-8 del juego de caracteres Unicode que utiliza de uno a cuatro bytes por carácter.
utf8mb3
: una codificación UTF-8 del juego de caracteres Unicode que utiliza de uno a tres bytes por carácter.
En
MySQL,
utf8
es actualmente un alias para
utf8mb3
que
está en desuso
y se eliminará en una futura versión de
MySQL
.
En ese punto,
utf8
se convertirá en una referencia a
utf8mb4
.
Entonces, independientemente de este alias, puede configurar conscientemente una codificación
utf8mb4
.
UTF-8 es una codificación de longitud variable. En el caso de UTF-8, esto significa que almacenar un punto de código requiere de uno a cuatro bytes. Sin embargo, la codificación de MySQL llamada "utf8" (alias de "utf8mb3") solo almacena un máximo de tres bytes por punto de código.
Por lo tanto, el juego de caracteres "utf8" / "utf8mb3" no puede almacenar todos los puntos de código Unicode: solo admite el rango 0x000 a 0xFFFF, que se denomina " Plano multilingüe básico ". Consulte también Comparación de codificaciones Unicode .
Esto es lo que (una versión anterior de la misma página en) la documentación de MySQL tiene que decir al respecto:
El juego de caracteres llamado utf8 [/ utf8mb3] usa un máximo de tres bytes por carácter y contiene solo caracteres BMP. A partir de MySQL 5.5.3, el conjunto de caracteres utf8mb4 utiliza un máximo de cuatro bytes por carácter que admite caracteres adicionales:
Para un carácter BMP, utf8 [/ utf8mb3] y utf8mb4 tienen características de almacenamiento idénticas: los mismos valores de código, la misma codificación, la misma longitud.
Para un carácter suplementario, utf8 [/ utf8mb3] no puede almacenar el carácter , mientras que utf8mb4 requiere cuatro bytes para almacenarlo. Como utf8 [/ utf8mb3] no puede almacenar el carácter en absoluto, no tiene caracteres suplementarios en las columnas utf8 [/ utf8mb3] y no necesita preocuparse por convertir caracteres o perder datos al actualizar datos utf8 [/ utf8mb3] de versiones anteriores de MySQL
Entonces, si desea que su columna admita el almacenamiento de caracteres que se encuentran fuera del BMP (y generalmente lo desea), como emoji , use "utf8mb4". Consulte también ¿Cuáles son los caracteres Unicode no BMP más comunes en uso real? .