Frage

kann ich lesen Sie die MySQL Dokumentation und es ist ziemlich klar. Aber wie entscheidet man, welchen Zeichensatz zu benutzen? Auf welche Daten hat Sortierungs einen Effekt?

Ich frage nach einer Erklärung der beiden und wie sie wählen.

War es hilfreich?

Lösung

Von MySQL docs :

  

Zeichensatz ist ein Satz von Symbolen   und Kodierungen. Ein Sortierungs ist ein Satz von   Regeln für Zeichen in einem Vergleich   Zeichensatz. Lassen Sie uns die   Unterscheidung klar mit einem Beispiel   ein imaginärer Zeichensatz.

     

Nehmen wir an, dass wir ein Alphabet haben mit   vier Buchstaben: 'A', 'B', 'a', 'b'. Wir   gibt jedem Buchstaben eine Zahl: 'A' = 0,   'B' = 1 ist, 'a' = 2, 'b' = 3. Der Buchstabe   ‚A‘ ist ein Symbol, die Zahl 0 die   Codierung für ‚A‘, und die Kombination   alle vier Buchstaben und ihre   Kodierungen ist ein Zeichensatz.

     

Nun sei angenommen, dass wir vergleichen wollen   zwei Stringwerte, ‚A‘ und ‚B‘. Das   einfachste Weg, dies zu tun ist, zu betrachten   die Codierungen: 0 für ‚A‘ und 1 für   'B'. Da 0 kleiner als 1 ist, sagen wir   ‚A‘ ist kleiner als ‚B‘. Nun, was wir haben   gerade getan ist eine Sortierung gelten unsere   Zeichensatz. Die Sortierung ist ein Satz   von Regeln (nur eine Regel in diesem Fall):   „Vergleichen die Kodierungen.“ Wir nennen dies   einfachste aller möglichen Sortierungen ein   Binärsortierung.

     

Aber was ist, wenn wir sagen wollen, dass die   Klein- und Großbuchstaben sind   Äquivalent? Dann hätten wir bei   mindestens zwei Regeln: (1) Behandlung der   Kleinbuchstabe ‚a‘ und ‚b‘ als   entspricht ‚A‘ und ‚B‘; (2) dann   Vergleichen Sie die Kodierungen. Wir nennen dies eine   Groß- und Kleinschreibung Sortierung. Es ist ein   etwas komplexer als ein binären   Sortierung.

     

Im wirklichen Leben, die meisten Zeichensätze haben   viele Zeichen: nicht nur ‚A‘ und ‚B‘   sondern ganze Alphabete, manchmal   mehrere Alphabete oder östlicher Schreib   Systeme mit Tausenden von Zeichen,   zusammen mit vielen Sonderzeichen und   Satzzeichen. Auch im wirklichen Leben,   die meisten Sortierungen haben viele Regeln: nicht   nur Groß- und Kleinschreibung, sondern auch   accent Unempfindlichkeit (ein „Akzent“ ist ein   angebracht Markierung zu einem Charakter, wie in   Deutsch ‚ö‘) und mehrere Zeichen   Mappings (wie die Regel, die ‚O‘ =   ‚OE‘ in einer der beiden deutschen   Sortierungen).

Andere Tipps

A Zeichencodierung ist eine Möglichkeit, Zeichen zu codieren, damit sie in den Speicher passen. Das heißt, wenn der Zeichensatz ist ISO-8859-15, das Euro-Symbol, € wird als 0xa4 codiert werden, und in UTF-8, wird es 0xe282ac sein.

Die Sortierungs wird, wie Zeichen zu vergleichen, in LATIN9 gibt es Buchstaben als e é è ê f, wenn sie von ihrer binären Darstellung sortiert, wird es e f é ê è gehen, aber wenn die Sortierung eingestellt ist, zum Beispiel, Französisch, werden Sie sie in der Reihenfolge haben Sie dachten, sie wäre, die alle e é è ê ist gleich sind, und dann f.

Ein Zeichensatz ist eine Teilmenge aller schriftlichen Glyphen. Eine Zeichencodierung gibt an, wie die Zeichen in numerische Werte abgebildet werden. Einige Zeichencodierungen wie UTF-8 und UTF-16, kann ein beliebiges Zeichen in der Universal Character Set kodieren. Andere, wie US-ASCII oder ISO-8859-1 kann nur eine kleine Teilmenge kodieren, da sie verwenden 7 und 8 Bit pro Zeichen sind. Da beide viele Standards einen Zeichensatz angeben und eine Zeichenkodierung, wird der Begriff „Zeichensatz“ oft frei für „Zeichencodierung“ ersetzt.

Eine Zusammenstellung enthält Regeln, die festlegen, wie können Zeichen für die Sortierung verglichen werden. Sortierungen Regeln können locale spezifisch sein. Die richtige Reihenfolge von zwei Zeichen variiert von Sprache zu Sprache

Die Wahl eines Zeichensatz und Sortier kommt darauf an, ob Ihre Anwendung ist internationalisiert oder nicht. Wenn nicht, welche locale zielen Sie ab?

Um zu entscheiden, welche Zeichensatz unterstützen wollen, müssen Sie Ihre Anwendung in Betracht ziehen. Wenn Sie Benutzereingaben speichern, könnte es schwierig sein, alle Gegenden voraussehen, in dem Sie Ihre Software wird schließlich verwendet werden. Um sie alle zu unterstützen, könnte es am besten sein, die UCS (Unicode) von Anfang an zu unterstützen. Allerdings gibt es ein Kosten dazu; viele westeuropäischen Zeichen werden nun benötigen zwei Byte Speicherplatz pro Zeichen statt einem.

die richtige Zusammenstellung wählen kann Leistung helfen, wenn Ihre Datenbank die Sortierung verwendet einen Index zu erstellen, und später verwendet, dass Index sortierten Ergebnisse zu liefern. da Kollatierungsregeln sind oft länderspezifische, wird jedoch, dass Index wertlos sein, wenn Sie Ergebnisse sortieren müssen nach den Regeln eines anderen locale.

Ich schlage vor, utf8mb4_unicode_ci zu verwenden, die auf dem Unicode-Standard für die Sortierung und Vergleich basiert, die genau in einem sehr weiten Bereich von Sprachen sortiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top