Mysql
 sql >> Base de données >  >> RDS >> Mysql

Classement MySQL pour stocker des données multilingues de langue inconnue

Vous devez utiliser un classement Unicode. Vous pouvez le définir par défaut sur votre système, ou sur chaque champ de vos tables. Il existe les noms de classement Unicode suivants, et voici leurs différences :

utf8_general_ci est une collation très simple. Il supprime simplement tous les accents, puis convertit en majuscules et utilise le code de ce type de lettre de résultat "lettre de base" pour comparer.

utf8_unicode_ci utilise la table d'éléments de classement Unicode par défaut.

Les principales différences sont :

  1. utf8_unicode_ci prend en charge ce que l'on appelle les expansions et les ligatures, par exemple :la lettre allemande ß (U+00DF LETTER SHARP S) est triée près de "ss" La lettre Œ (U+0152 LATIN CAPITAL LIGATURE OE) est triée près de "OE".

utf8_general_ci ne prend pas en charge les extensions/ligatures, il trie toutes ces lettres comme des caractères uniques, et parfois dans le mauvais ordre.

  1. utf8_unicode_ci est généralement plus précis pour tous les scripts. Par exemple, sur le bloc cyrillique :utf8_unicode_ci convient à toutes ces langues :russe, bulgare, biélorusse, macédonien, serbe et ukrainien. Alors que utf8_general_ci ne convient que pour le sous-ensemble russe et bulgare du cyrillique. Les lettres supplémentaires utilisées en biélorusse, macédonien, serbe et ukrainien ne sont pas bien triées.

+/- L'inconvénient de utf8_unicode_ci est qu'il est un peu plus lent que utf8_general_ci.

Donc, selon, si vous savez ou non, quelles langues/caractères spécifiques vous allez utiliser, je vous recommande d'utiliser utf8_unicode_ci qui a une couverture plus large.