Você deve usar um agrupamento Unicode. Você pode configurá-lo por padrão em seu sistema ou em cada campo de suas tabelas. Existem os seguintes nomes de agrupamento Unicode e estas são suas diferenças:
utf8_general_ci é um agrupamento muito simples. Ele apenas remove todos os acentos e converte para maiúsculas e usa o código desse tipo de letra de resultado "letra base" para comparar.
utf8_unicode_ci usa a tabela de elementos de agrupamento Unicode padrão.
As principais diferenças são:
- utf8_unicode_ci suporta as chamadas expansões e ligaduras, por exemplo:a letra alemã ß (U+00DF LETTER SHARP S) é classificada perto de "ss" A letra Œ (U+0152 LATIN CAPITAL LIGATURE OE) é classificada perto de "OE".
utf8_general_ci não suporta expansões/ligaduras, ele classifica todas essas letras como caracteres únicos e, às vezes, na ordem errada.
- utf8_unicode_ci é geralmente mais preciso para todos os scripts. Por exemplo, no bloco cirílico:utf8_unicode_ci é adequado para todos esses idiomas:russo, búlgaro, bielorrusso, macedônio, sérvio e ucraniano. Enquanto utf8_general_ci é bom apenas para o subconjunto russo e búlgaro do cirílico. Letras extras usadas em bielorrusso, macedônio, sérvio e ucraniano não são bem classificadas.
+/- A desvantagem de utf8_unicode_ci é que é um pouco mais lento que utf8_general_ci.
Então, dependendo, se você sabe ou não, quais idiomas/caracteres específicos você vai usar, eu recomendo que você use utf8_unicode_ci, que tem uma cobertura mais ampla.