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_ci
utiliza 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_ci
es generalmente más preciso para todos los scripts. Por ejemplo, en el bloque cirílico:utf8_unicode_ci
está 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:http://forums.mysql.com/read .php?103,187048,188748#msg-188748