Der Unterschied zwischen 'utf8_general_ci' und 'utf8_unicode_ci'

Warning: This page is a part of an archive now and will be removed in the future.

MySQL bietet viele verschiedene Kollationen, in welchen Datenbanken betrieben werden können. Diese bieten jeweils einen unterschiedlichen Zeichensatz und damit auch eine unterschiedliche Anzahl an zur Verfügung stehenden Zeichen an, die gespeichert werden können. Mit UTF-8 hat man hierbei einen hochstandardisierten Zeichensatz, welcher sehr viele Zeichen beinhaltet.

Doch auch hier gibt es nochmals einige Unterschiede. So gibt es z. B. utf8_general_ci, utf8_unicode_ci, utf8_swedish_ci etc. Hier gibt es nochmals Unterschiede, die je nach Region, für welche die Datenbank eingesetzt werden soll, hilfreich sind. Standardmäßig ist utf8_general_ci in Benutzung. Während dieses den UCA (Unicode Collation Algorithm, Unicode-Sortierfolgenalgorithmus) nicht unterstützt, ist er bei utf8_unicode_ci fast vollständig implementiert, einige Zeichen ausgenommen.

Was heißt das aber nun?
utf8_unicode_ci kann mithilfe dieses Algorithmus Erweiterungen in Zeichen erkennen, so dass er z. B. ein ß korrekt mit einem ss gleichsetzt. utf8_general_ci dagegen kann nur 1:1-Beziehungen herstellen. Für diese Kollation ist damit ß = s, ä = a, ö = o etc. Damit sind zwar die Sortierungen schneller, aber auch ungenauer.

Ein reales Beispiel:
Für utf8_general_ci bietet der Begriff Äpfel genau dieselben Zeichen wie Apfel, d. h. es ist hier nicht möglich, konkret nach der Einzahl oder Mehrzahl dieses Begriffs zu suchen, da er als gleich erkannt wird. utf8_unicode_ci kann hierbei jedoch eine Unterscheidung treffen.

Die Geschwindigkeitsvorteile von utf8_general_ci sind zudem zu vernachlässigen, da sie höchstens in Benchmarks auffallen. Gerade auch in der heutigen Zeit, in der man mehr als genug Rechenkraft hat, sollte das keinen bedeutsamen Unterschied machen, der die Nachteile bei der Sortierung rechtfertigt.

Die weiteren bereits genannten Kollationen sind für spezielle Unterscheidungen je nach Land gedacht. So ist z. B. unter utf8_swedish_ci folgender Vergleich wahr: Ü = Y < Ö
utf8_spanish_ci wiederum setzt ñ als eigenen Buchstaben zwischen n und o.
Diese Kollationen sind demnach dann einzusetzen, wenn sie entsprechend benötigt werden.
About the Author
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

6,283 times read

Comments 2

  • Black Rider -

    Im Normalfall ja. Zu beachten ist grundlegend allerdings noch, dass Vietnamesische und einige Minderheitensprachen in Russland wie etwa das Udmurtische, das Tatarische, das Baschkirische und Mari auch von utf8_unicode_ci noch nicht unterstützt werden.

  • DragonGun -

    Endlich mal eine verständliche Erklärung! Danke :)
    Was wäre denn das beste bei Multikulturellen Comms? unicode?

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.