MySQL Collation utf8_unicode Unterschiede

10

Aber ich habe mich über die Bedeutung von MySQL Collation informiert und was ich bisher in Bezug auf Kompatibilität und Genauigkeit gelernt habe, ist, dass diese 4 meine beste Wahl zu sein scheinen.

  • utf8_unicode_ci
  • utf8_unicode_520_ci
  • utf8mb4_unicode_ci
  • utf8mb4_unicode_520_ci

Nach meinem Verständnis wäre uft8mb4 gut für Charaktere mit Unterstützung für mehrere Sprachen (Zeichen) (zum Beispiel Japanisch). uf8 unterstützt nur 3 Bytes, während uf8mb4 4 Bytes unterstützt. Es klingt also so, als ob die offensichtliche Wahl uf8mb4 wäre, aber der Haken scheint zu sein, dass Sie ein Längenlimit haben (Verdammt! Ich will meinen Kuchen und esse ihn auch), was ein wenig besorgniserregend ist (glaube ich).

Dann berücksichtigen Sie etwa den 520-Standard; das bietet mehr, von dem wenig, was ich darauf finden konnte. Aber das ist natürlich das Problem, ich konnte sehr wenig darüber finden. Nur dass die Leute sagen, dass es eine Verbesserung ist, aber sehr vage, wie das ist.

Ich möchte das Beste, was ich mit so wenig Einschränkungen wie möglich bekommen kann ... Ich dachte, jemand hier könnte ein oder zwei Dinge wissen. Die offizielle MySQL-Site war nicht so informativ, wie ich es mir erhofft hatte.

Welche der 4 bieten die größte Kompatibilität, Genauigkeit und Speicherlänge? Was ist wirklich der große Unterschied zwischen dem 502-Standard?

Adam
quelle

Antworten:

10

Unicode-Kollatierungsnamen können eine Versionsnummer enthalten, um die Version des Unicode-Kollatierungsalgorithmus (UCA) anzugeben, auf der die Kollatierung basiert. UCA-basierte Kollatierungen ohne Versionsnummer im Namen verwenden die version-4.0.0UCA-Gewichtungsschlüssel . Ein Sortierungsname, utf8_unicode_520_cider auf UCA 5.2.0-Gewichtsschlüsseln basiert .

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

Mathias Bynens
quelle
Um dies weiter zu erläutern: Durch die Sortierung wird die verwendete Codierung nicht geändert (was MySQL fälschlicherweise aufruft character setoder charset), sodass utf8Sie 3-Byte-UTF-8 (nicht Standard) und utf8mb44-Byte-UTF-8 erhalten.
Jynus
1
In einfachem Englisch ist der Unterschied zwischen UCA 4.0.0 und UCA 5.2.0 neuer als einer. Was wäre der Vor- oder Nachteil?
Adam
4
Dies wirkt sich auf die Sortierung aus. Wenn Sie unbedingt nach einer neueren (aber immer noch veralteten) Version des Unicode-Standards sortieren müssen, sollten Sie diese verwenden 520_ci. Für meine Websites könnte es mich nicht weniger interessieren.
Mathias Bynens
Was ist die Bytegröße des größten Bytegrößenzeichens in der utf8mb4_unicode_520_ciSortierung?
Oldboy