utf8_general_ci
es una muy simple - y en Unicode, muy roto - cotejo, que da resultados incorrectos en texto general Unicode. Lo que hace es:
- convierte a Unicode forma normalización D para la descomposición canónica
- elimina cualquier combinación de caracteres
- se convierte en mayúsculas
Esto no funciona correctamente en Unicode, porque no entiende la carcasa Unicode. La carcasa Unicode por sí sola es mucho más complicada de lo que puede manejar un enfoque ASCII. Por ejemplo:
- La letra minúscula de "ẞ" es "ß", pero la mayúscula de "ß" es "SS".
- Hay dos sigmas griegas minúsculas, pero solo una mayúscula; considerar "Σίσυφος".
- Las letras como "ø" no se descomponen en "o" más un signo diacrítico, lo que significa que no se ordenarán correctamente.
Hay muchas otras sutilezas.
utf8_unicode_ci
utiliza el estándar Unicode Collation Algorithm, soporta llamadas expansiones y ligaduras, por ejemplo: ß carta alemanes (U + 00DF dura carta S) se ordenan cerca "ss" Carta OE (U + 0152 latina mayúscula LIGADURAS OE) está ordenada cerca de "OE".
utf8_general_ci
no soporta expansiones/ligaduras, ordena todas estas cartas como personajes individuales, ya 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 de cirílico ruso y búlgaro. 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 poco pequeña más lento que utf8_general_ci
. Pero ese es el precio que paga por la corrección. O bien puede tener una respuesta rápida que está mal, o una respuesta muy leve que es correcta. Tu elección. 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
Véase también http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci – unor