Red de conocimientos turísticos - Conocimientos sobre calendario chino - Comprensión completa de la diferencia entre utf8 y utf8mb4 en mysql

Comprensión completa de la diferencia entre utf8 y utf8mb4 en mysql

Se puede entender simplemente que utf8mb4 es la codificación de caracteres más grande admitida para cualquier texto.

¿Por qué UTF8MB4?

Dado que utf8 no tiene problemas en el uso diario, ¿por qué usar utf8mb4? Las versiones anteriores de MySQL admiten la codificación utf8 con una longitud máxima de caracteres de 3 bytes, por lo que si encuentra un carácter de 4 bytes, obtendrá un error. El carácter Unicode más grande que se puede codificar con UTF-8 de tres bytes es 0xFFFF, que es el plano multitexto básico (BMP) en Unicode. Es decir, cualquier carácter Unicode que no esté en el multinivel base no se puede almacenar utilizando el juego de caracteres utf8 nativo de MySQL. ¿Qué personajes no están en BMP? Los más comunes son Emoji (Emoji es una codificación Unicode especial, que se encuentra comúnmente en teléfonos iOS y Android), algunos caracteres chinos poco comunes y cualquier carácter Unicode recién agregado.

Codificación UTF-8

Teóricamente, el formato UTF-8 utiliza de 1 a 6 bytes para codificar hasta 31 bits de caracteres. La última especificación UTF-8 utiliza sólo de 1 a 4 bytes para codificar hasta 21 bits, suficiente para representar los 17 planos Unicode. Para obtener más información sobre la codificación UTF, lea el artículo Resumen de codificaciones comunes.

utf8 es el conjunto de caracteres admitido en versiones anteriores de Mysql. Solo admite caracteres UTF-8 con una longitud de no más de tres bytes, que es el plano básico de texto múltiple de Unicode. Esto puede deberse a que en los primeros días del lanzamiento de MySQL, los caracteres fuera del plano multitexto básico rara vez se usaban. Después de la versión 5.5.3 de MySQL, para guardar caracteres UTF-8 de 4 bytes de longitud en MySQL, puede utilizar el juego de caracteres utf8mb4. Por ejemplo, puedes almacenar emoticonos emoj directamente usando la codificación de caracteres utf8mb4 en lugar de almacenar los caracteres de reemplazo del emoji.

Para una mejor compatibilidad siempre debes usar utf8mb4 en lugar de utf8, de hecho las últimas versiones de phpmyadmin usan utf8mb4 por defecto. Es cierto que usar utf8mb4 para almacenar datos de tipo CHAR ocupará más espacio.

Entonces, en comparación con utf8, ¿cuáles son las ventajas de utf8mb4?

Soporta codificación de emoticonos.

A efectos prácticos, puedes configurar utf8mb4 para bibliotecas o tablas que utilicen emoticonos.

Por ejemplo, puedes utilizar comentarios, artículos, etc. que admitan emoticonos.

Se recomienda usar utf8 para tablas normales. Si la tabla necesita admitir emoticonos, use utf8mb4

También hay una regla de clasificación al crear una nueva biblioteca o tabla MySQL.

p>

utf8_unicode_ci es más preciso, utf8_general_ci es más rápido. Por lo general, utf8_general_ci es lo suficientemente preciso para que lo usemos. Después de leer el código fuente de muchos programas, descubrí que la mayoría de ellos también usan utf8_general_ci, por lo que al crear una nueva base de datos, generalmente puede usar utf8_general_ci, generalmente puede usar utf8_general_ci

Si es utf8mb4, corresponde a utf8mb4_general_ci utf8mb4_unicode_ci

Si es utf8mb4, corresponde a utf8mb4_general_ci.

>