Tipps zur MySQL UTF/Unicode-Migration
-
09-06-2019 - |
Frage
Hat jemand irgendwelche Tipps oder Momente, auf die man achten sollte, wenn man versucht, MySQL-Tabellen von den standardmäßigen schwedischen oder ASCII-Zeichensätzen, bei denen die Groß-/Kleinschreibung nicht beachtet wird, nach utf-8 zu migrieren?Einige der Projekte, an denen ich beteiligt bin, streben eine bessere Internationalisierung an und die Datenbank wird ein wesentlicher Teil dieser Veränderung sein.
Bevor wir versuchen, die Datenbank zu ändern, werden wir jede Site so konvertieren, dass sie die UTF-8-Zeichenkodierung verwendet (von am wenigsten kritisch bis am meisten), um sicherzustellen, dass alle Eingaben/Ausgaben denselben Zeichensatz verwenden.
Vielen Dank für jede Hilfe
Lösung
Einige Hinweise:
- Dein
CHAR
UndVARCHAR
Spalten benötigen bis zu dreimal mehr Speicherplatz.(Für schwedische Wörter werden Sie wahrscheinlich nicht viel Speicherplatz gewinnen.) - Verwenden
SET NAMES utf8
bevor Sie in die Datenbank lesen oder schreiben.Wenn Sie dies nicht tun, erhalten Sie teilweise verstümmelte Zeichen.
Andere Tipps
Ich werde die folgenden Websites/Artikel durchgehen, um eine Antwort zu finden.
Häufig gestellte Fragen zu UTF-8 und Unicode
Hanselminutes-Folge „Sorting out Internationalization with Michael Kaplan“
Und ich habe auch gerade einen sehr thematischen Beitrag von Derek Sivers im O'Reilly ONLamp Blog gefunden, als ich das geschrieben habe. Konvertieren von MySQL-Daten in latin1 in utf8 utf-8
Beachten Sie die Beschränkungen der Indexlänge.Wenn eine Tabelle strukturiert ist, sagen Sie:
a varchar (255) b varchar (255) key ('a', 'b')
Sie werden die 1000-Byte-Grenze für die Schlüssellänge überschreiten.255+255 ist in Ordnung, aber 255*3 + 255*3 wird nicht funktionieren.
Dein
CHAR
UndVARCHAR
Spalten benötigen bis zu dreimal mehr Speicherplatz.
Nur wenn sie vollgestopft sind mit Latin-1 mit Ordnungszahlen > 128.Ansonsten ist der erhöhte Speicherplatzverbrauch von UTF-8 minimal.
Die Kollationen sind nicht immer günstig.Sie erhalten Umlats, die in nicht umlatte Versionen sortiert werden, was nicht immer korrekt ist.Vielleicht möchten Sie mit utf8_bin arbeiten, aber dann muss auch die Groß-/Kleinschreibung beachtet werden.