Suche…


Erklärung

CREATE TABLE foo ( ...
    name CHARACTER SET utf8mb4
    ... );

Verbindung

Für die Verwendung von Zeichensätzen ist es wichtig, dem MySQL-Server mitzuteilen, wie die Bytes des Clients codiert werden. Hier ist ein Weg:

SET NAMES utf8mb4;

Jede Sprache (PHP, Python, Java, ...) hat einen eigenen Weg, der normalerweise SET NAMES vorzuziehen ist.

Zum Beispiel: SET NAMES utf8mb4 zusammen mit einer Spalte, die als CHARACTER SET latin1 deklariert ist. Dies wird beim INSERTing von latin1 in utf8mb4 INSERTing und beim SELECTing zurück SELECTing .

Welches Zeichenset und welche Sammlung?

Es gibt Dutzende von Zeichensätzen mit Hunderten von Kollatierungen. (Eine gegebene Kollatierung gehört nur zu einem Zeichensatz.) Siehe Ausgabe von SHOW COLLATION; .

In der Regel sind nur 4 CHARACTER SETs Bedeutung:

ascii -- basic 7-bit codes.
latin1 -- ascii, plus most characters needed for Western European languages.
utf8 -- the 1-, 2-, and 3-byte subset of utf8.  This excludes Emoji and some of Chinese.
utf8mb4 -- the full set of UTF8 characters, covering all current languages.

Alle enthalten englische Zeichen, die identisch codiert sind. utf8 ist eine Teilmenge von utf8mb4.

Beste Übung...

  • Verwenden Sie utf8mb4 für jeden TEXT oder VARCHAR - Spalte , die eine Vielzahl von Sprachen in ihm haben können.
  • Verwenden Sie ascii (latin1 ist in Ordnung) für Hex-Zeichenfolgen (UUID, MD5 usw.) und einfache Codes (Ländercode, Postcode usw.).

utf8mb4 gab es bis Version 5.5.3 nicht, daher war utf8 das beste, was davor verfügbar war.

Außerhalb von MySQL bedeutet "UTF8" dasselbe wie utf8mb4 von MySQL und nicht utf8 von MySQL.

Kollatierungen beginnen mit dem Zeichensatznamen und enden normalerweise mit _ci für "Groß- und Kleinschreibung" und " _bin " für "Vergleichen Sie einfach die Bits."

Die "neueste" utf8mb4-Kollatierung ist utf8mb4_unicode_520_ci , basierend auf Unicode 5.20. Wenn Sie mit einer einzigen Sprache arbeiten, möchten Sie beispielsweise utf8mb4_polish_ci werden die Buchstaben basierend auf den polnischen Konventionen leicht neu angeordnet.

Zeichensätze für Tabellen und Felder festlegen

Sie können einen Zeichensatz sowohl pro Tabelle als auch für CHARSET einzelne Feld mit den Anweisungen CHARACTER SET und CHARSET :

CREATE TABLE Address (
    `AddressID`   INTEGER NOT NULL PRIMARY KEY,
    `Street`      VARCHAR(80) CHARACTER SET ASCII,
    `City`        VARCHAR(80),
    `Country`     VARCHAR(80) DEFAULT "United States",
    `Active`      BOOLEAN DEFAULT 1,
) Engine=InnoDB default charset=UTF8;

City und Country verwenden UTF8 , da wir dies als Standardzeichensatz für die Tabelle festlegen. Street hingegen wird ASCII , da wir dies ausdrücklich gesagt haben.

Die Einstellung des richtigen Zeichensatzes hängt stark von Ihrem Datensatz ab, kann jedoch auch die Portabilität zwischen Systemen verbessern, die mit Ihren Daten arbeiten.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow