utf8_general_ci es una intercalación muy simple, y en Unicode, muy rota, que da resultados incorrectos en texto Unicode general. Lo que hace es:
- convierte a formato D de normalización Unicode para descomposición canónica
- elimina cualquier carácter combinado
- convierte a mayúsculas
Esto no funciona correctamente en Unicode, porque no entiende las mayúsculas y minúsculas de Unicode. Las mayúsculas y minúsculas Unicode por sí solas son mucho más complicadas de lo que puede manejar un enfoque basado en ASCII. Por ejemplo:
- La minúscula de "ẞ" es "ß", pero la mayúscula de "ß" es "SS".
- Hay dos sigmas griegos en minúsculas, pero solo uno en mayúsculas; considere “Σίσυφος”.
- Letras como "ø" no se descomponen en una "o" más un diacrítico, lo que significa que no se ordenarán correctamente.
Hay muchas otras sutilezas.
utf8_unicode_ciutiliza el estándar Algoritmo de intercalación Unicode , admite las llamadas expansiones y ligaduras, por ejemplo:la letra alemana ß (U+00DF LETTER SHARP S) se ordena cerca de "ss"La letra Œ (U+0152 LATIN CAPITAL LIGATURE OE) se ordena cerca de "OE".
utf8_general_ci no admite expansiones/ligaduras, clasifica todas estas letras como caracteres únicos y, a veces, en un orden incorrecto.
utf8_unicode_cies generalmente más preciso para todos los scripts. Por ejemplo, en el bloque cirílico:utf8_unicode_ciestá bien para todos estos idiomas:ruso, búlgaro, bielorruso, macedonio, serbio y ucraniano. Mientras que utf8_general_ci está bien solo para el subconjunto ruso y búlgaro del cirílico. Las letras adicionales utilizadas en bielorruso, macedonio, serbio y ucraniano no están bien ordenadas.
El costo de utf8_unicode_ci es que es un pequeño bits más bajo que utf8_general_ci . Pero ese es el precio que pagas por la corrección. O puede tener una respuesta rápida que sea incorrecta, o una respuesta un poco más lenta que sea correcta. Tu eliges. Es muy difícil justificar dar respuestas incorrectas, por lo que es mejor asumir que utf8_general_ci no existe y usar siempre utf8_unicode_ci . Bueno, a menos que quieras respuestas incorrectas.
Fuente:https://forums.mysql.com/read .php?103,187048,188748#msg-188748