2016-05-18 10 views
13

ich in MariaDB/MySQL angemeldet und eingetragen:Unterschied zwischen utf8mb4_unicode_ci und utf8mb4_unicode_520_ci Sortierungen in MariaDB/MySQL?

SHOW COLLATION; 

Ich sehe utf8mb4_unicode_ci und utf8mb4_unicode_520_ci unter den verfügbaren Sortierungen. Wie unterscheiden sich diese Kollatierungen voneinander und welche sollten wir verwenden?

+1

Ich fand Antworten auf SO [hier] (https://dba.stackexchange.com/questions/65863/mysql-collation-utf8-unicode-differences) und [hier] (https://stackoverflow.com/questions/18904883/Was ist der Unterschied zwischen UTF8-Unicode-Ci-und UTF8-Unicode-520-Ci) und ich habe eine leicht verständliche Erklärung [hier] (https://www.monolune.com/mysql-utf8-Zeichensatz-und-Kollationen erklärt /). – Flux

Antwort

16

Nun, Sie müssen in der Dokumentation nachlesen. Ich kann Ihnen nicht sagen, was Sie verwenden sollten, weil jedes Projekt anders ist.

10.1.3 Collation Namenskonventionen

Kollation Namen MySQL folgen diesen Konventionen:

A Sortierungsname mit dem Namen der Zeichen beginnt eingestellt, mit dem es verknüpft ist, gefolgt von einem oder mehreren Suffixen andere Anzeige Kollationierungseigenschaften. Zum Beispiel sind utf8_general_ci und latin_swedish_ci Sortierfolgen für die utf8- bzw. latin1-Zeichensätze.

Eine sprachspezifische Sortierung enthält einen Sprachnamen. Zum Beispiel utf8_turkish_ci und utf8_hungarian_ci sortieren Zeichen für den utf8-Zeichensatz mit den Regeln von Türkisch bzw. Ungarisch.

Die Groß- und Kleinschreibung für die Sortierung wird durch _ci (Groß- und Kleinschreibung), _cs (Groß- und Kleinschreibung) oder _bin (Binär; Zeichenvergleiche basieren auf Zeichen-Binärcodewerten) angezeigt. Zum Beispiel ist latin1_general_ci nicht zwischen Groß- und Kleinschreibung, latin1_general_cs unterscheidet zwischen Groß- und Kleinschreibung, und latin1_bin verwendet binäre Codewerte.

Für Unicode können Sortierungsnamen eine Versionsnummer enthalten, die die Version des Unicode Collation Algorithm (UCA) angibt, auf dem die Sortierung basiert. UCA-basierte Sortierfolgen ohne Versionsnummer im Namen verwenden die UCA-Gewichtungsschlüssel der Version 4.0.0. Beispiel:

utf8_unicode_ci (mit keiner benannten Version) basiert auf UCA 4.0.0 Gewichtungsschlüsseln> (http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt).

utf8_unicode_520_ci basiert auf UCA 5.2.0 Gewichtsschlüsseln (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt).

Für Unicode behalten die Sortierreihenfolgen xxx_general_mysql500_ci die Sortierreihenfolge der ursprünglichen xxx_general_ci-Sortierungen vor 5.1.24 bei und erlauben Upgrades für Tabellen, die vor MySQL 5.1.24 erstellt wurden. Weitere Informationen finden Sie unter Abschnitt 2.11.3, "Überprüfen, ob Tabellen oder Indizes neu erstellt werden müssen", und Abschnitt 2.11.4, "Erstellen oder Reparieren von Tabellen oder Indizes".

Quelle: https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html