MySQL Collation utf8_unicode diferencias

10

Pero he estado leyendo sobre la importancia de MySQL Collation y lo que he aprendido hasta ahora con respecto a la compatibilidad y la precisión es que estos 4 parecen ser mi mejor apuesta.

  • utf8_unicode_ci
  • utf8_unicode_520_ci
  • utf8mb4_unicode_ci
  • utf8mb4_unicode_520_ci

Según tengo entendido, uft8mb4 sería bueno para caracteres con soporte de idioma mutli (caracteres) (japonés, por ejemplo). uf8 solo admite 3 bytes, mientras que uf8mb4 admite 4 bytes. Por lo tanto, parece que la opción obvia sería uf8mb4, pero el problema parece ser que tienes un límite de longitud (¡Maldita sea! Quiero mi pastel y comerlo también), lo que es un poco preocupante (creo).

Entonces tienes en cuenta sobre el estándar 520; que ofrece más, de lo poco que pude encontrar en él. Pero ese es, por supuesto, el problema, podría encontrar muy poco al respecto. Solo que la gente dice que es una mejora, pero es muy impreciso sobre cómo es eso.

Quiero lo máximo que puedo obtener con la menor cantidad de restricciones posible ... Supuse que alguien aquí podría saber una o dos cosas. El sitio oficial de MySQL no fue tan informativo como esperaba.

¿De los 4 que ofrecerían la mayor compatibilidad, precisión y la mayor longitud de almacenamiento? Además, ¿cuál es realmente la gran diferencia entre el estándar 502?

Adán
fuente

Respuestas:

10

Los nombres de clasificación Unicode pueden incluir un número de versión para indicar la versión del Algoritmo de clasificación Unicode (UCA) en el que se basa la clasificación. Las intercalaciones basadas en UCA sin un número de versión en el nombre usan las version-4.0.0teclas de peso UCA . Un nombre de clasificación como utf8_unicode_520_cise basa en las claves de peso UCA 5.2.0 .

Ver https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html .

Mathias Bynens
fuente
Para explicar más sobre esto: la intercalación no modificará la codificación utilizada (lo que MySQL llama erróneamente character seto charset), por lo que utf8le proporcionará UTF-8 de 3 bytes (no estándar) y utf8mb4le proporcionará UTF-8 de 4 bytes.
jynus
1
Entonces, en inglés simple, ¿cuál es la diferencia entre UCA 4.0.0 y UCA 5.2.0? ¿Cuál sería la ventaja o desventaja?
Adam
44
Afecta la clasificación. Si absolutamente necesita ordenar una versión más reciente (pero aún desactualizada) del estándar Unicode, entonces puede usarla 520_ci. Para mis sitios web no podría importarme menos.
Mathias Bynens
¿Cuál es el tamaño de byte del carácter de tamaño de byte más grande en la utf8mb4_unicode_520_ciclasificación?
oldboy