it-swarm.com.de

Warum verwenden wir utf8mb4_general_ci und nicht utf8mb4_unicode_ci?

Drupal unterstützt utf8mb4, verwendet jedoch utf8nb4_general_ci. Warum sollten Sie sich die Zeit nehmen, um es zu unterstützen, und es dann nicht vollständig unterstützen? Gibt es einen bestimmten Grund oder setzen Sie einfach utf8_general_ci aus dem vorherigen fort?

Gibt es Probleme, dies zu ignorieren und trotzdem Unicode zu verwenden?

Drupal Ticket: MySQL-Treiber unterstützt kein vollständiges UTF-8 (Emojis, asiatische Symbole, mathematische Symbole)

Hier ist eine Frage beim Stapelaustausch, die besagt, dass es wirklich keinen Grund gibt, Unicode heutzutage nicht mehr zu verwenden, und schließlich heißt es bei dieser Frage "utf8_general_ci ist eine Legacy-Zusammenstellung, die unterstützt keine Erweiterungen, Kontraktionen oder ignorierbaren Zeichen. "

Ich stelle fest, dass WordPress utf8mb4_unicode_ci verwendet.

6
Paul

Es scheint mir, dass die Empfehlung veraltet ist und dass utf8mb4_unicode_ci Ohne Probleme funktioniert. Es wurde von vielen Menschen für eine lange Zeit verwendet.


Es gibt einen Unterschied zwischen dem Ändern des Zeichensatzes von utf8 In utf8mb4 (Um mehr Codepunkte zu unterstützen) und dem Ändern der Sortierung von general_ci In unicode_ci (Um zu erhalten genauere Sortierung). Beide Änderungen können ihre eigenen Probleme verursachen, daher ist es sinnvoll, beide unabhängig voneinander durchzuführen.

utf8mb4 Wird standardmäßig seit 8.0.0-beta12 verwendet . Das Hauptproblem schien eine Änderung der Schlüssellängenbeschränkungen für InnoDB zu sein, aber meines Wissens hätte utf8mb4 Bereits vor dieser Änderung mit der Standard-MyISAM-Engine funktionieren müssen.

Das Wechseln zu unicode_ci Sollte keine Probleme verursachen, kann jedoch die Sortierreihenfolge für einige Websites unerwartet ändern.

Die Standardeinstellung für die Sortierung ist nur eine Standardeinstellung , und Module können bei Bedarf ohnehin ihre eigenen Kollatierungen auswählen. Ich habe auch keine Dokumentation gefunden, die besagt, dass Module eine bestimmte Sortierung erwarten sollten. Dem Datenbankinstallationshandbuch fehlt nur eine klare Aussage darüber, welche Kollatierungen unterstützt werden, und es ist inkonsistent:

  • Im Abschnitt über phpMyAdmin heißt es, dass Sie müssen

    Stellen Sie sicher, dass Sie COLLATION utf8_general_ci auswählen

  • Später im Abschnitt über die Installation über die Befehlszeile scheint general_ci Nicht erforderlich zu sein, und jede UTF-8-Sortierung reicht aus:

    Hinweis: Die Datenbank sollte mit UTF-8-Codierung (Unicode) erstellt werden, z. B. utf8_general_ci.

Darüber hinaus wird PostgreSQL unterstützt und es scheint, dass die Standard-UTF-8-Sortierung utf8mb4_unicode_ci Entspricht. Daher sollte die Verwendung mit MySQL ebenfalls in Ordnung sein.

9
kapex

Der folgende Link zum Beitrag erklärt, dass utf8mb4_unicode_ci besser ist als utf8mb4general_ci (was etwas schneller ist), da der zweite in einigen Sprachen Probleme bei der Sortierreihenfolge hat: https://stackoverflow.com/a/766996/860099

1