MySQL-Kollatierung zum Speichern mehrsprachiger Daten unbekannter Sprache

8

Ich bin neu in mehrsprachigen Daten und mein Geständnis ist, dass ich es noch nie zuvor versucht habe. Momentan arbeite ich an einer mehrsprachigen Seite, aber ich weiß nicht, welche Sprache verwendet wird.

Welche Sortierfolge / Zeichensatz von MySQL sollte ich verwenden, um dies zu erreichen?

Sollte ich einen Unicode-Zeichensatz verwenden?

Und natürlich sind diese Sprachen nicht außerhalb dieses Universums, diese müssen in der Menge sein, die wir meistens verwenden.

    
Imran Naqvi 26.11.2010, 19:18
quelle

3 Antworten

15

Sie sollten eine Unicode-Sortierung verwenden. Sie können es standardmäßig auf Ihrem System oder in jedem Feld Ihrer Tabellen festlegen. Es gibt die folgenden Unicode-Sortierungsnamen, und dies sind ihre Unterschiede:

utf8_general_ci ist eine sehr einfache Sortierung. Es gerade - Entfernt alle Akzente - konvertiert dann in Großbuchstaben und verwendet den Code dieser Art von "Basisbuchstaben" Ergebnis zu vergleichen.

utf8_unicode_ci verwendet die Standard-Unicode-Kollatierungselementtabelle.

Die Hauptunterschiede sind:

  1. utf8_unicode_ci unterstützt sogenannte Expansionen und Ligaturen, zum Beispiel: Der deutsche Buchstabe ß (U + 00DF LETTER SHARP S) ist in der Nähe von "ss" sortiert. Buchstabe Œ (U + 0152 LATIN CAPITAL LIGATURE OE) ist in der Nähe von "OE" sortiert / li>

utf8_general_ci unterstützt keine Erweiterungen / Ligaturen, es sortiert alle diese Buchstaben als einzelne Zeichen und manchmal in der falschen Reihenfolge.

  1. utf8_unicode_ci ist allgemein genauer für alle Skripte. Zum Beispiel in kyrillischer Schrift: utf8_unicode_ci ist für alle diese Sprachen in Ordnung: Russisch, Bulgarisch, Weißrussisch, Mazedonisch, Serbisch und Ukrainisch. Während utf8_general_ci ist nur für russische und bulgarische Untergruppe von kyrillisch. Extra-Buchstaben in belarussischen, mazedonischen, serbischen und ukrainischen sind nicht gut sortiert.

+/- Der Nachteil von utf8_unicode_ci ist, dass es etwas langsamer ist als utf8_general_ci.

Je nachdem, ob Sie wissen oder nicht, welche spezifischen Sprachen / Zeichen Sie verwenden werden, empfehle ich Ihnen, utf8_unicode_ci zu verwenden, das eine umfassendere Abdeckung bietet.

  

Auszug aus MySQL-Foren .

    
mariana soffer 26.11.2010, 23:15
quelle
1

UTF-8 umfasst die meisten Sprachen, das ist Ihre sicherste Wette. Es gibt jedoch Ausnahmen, und Sie müssen sicherstellen, dass alle Sprachen, die Sie abdecken möchten, in UTF-8 funktionieren. Meine Erfahrung mit dem Speichern von Zeichensätzen, die MySQL nicht versteht, ist, dass es nicht in der Lage ist, richtig zu sortieren, aber die Daten sind intakt geblieben, solange ich sie in der gleichen Zeichenkodierung lese, in der ich sie geschrieben habe.

UTF-8 ist die Zeichencodierung, eine Möglichkeit, eine Zahl zu speichern. Welches Zeichen durch welche Nummer repräsentiert wird, ist Unicode - eine wichtige Unterscheidung. Unicode hat eine große Anzahl von Sprachen und UTF-8 kann alle codieren (0 bis 10FFFF, eine Art von), aber Java kann nicht alle verarbeiten, da die interne Repräsentation der VM ein 16-Bit-Zeichen ist (was Ihnen nicht wichtig ist) Java:).

    
Martin Algesten 26.11.2010 19:21
quelle
0

Sie können einen beliebigen Sprachtext in die MySQL-Tabelle einfügen, indem Sie die Sortierung des Tabellenfelds in 'utf8_general_ci' ändern. Dabei wird nicht zwischen Groß- und Kleinschreibung unterschieden.

    
Jithu Wilson C 27.04.2017 12:49
quelle

Tags und Links