MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci

MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci

Referenz: MySQL-Zeichensatzübersicht

utf8mb4 wurde zum Standardzeichensatz in MySQL 8.0, wobei utf8mb4_0900_ai_ci die Standardsortierung in MySQL 8.0.1 und höher ist.

Für neue Projekte wird nur utf8mb4 berücksichtigt

Die UTF-8-Kodierung ist ein Kodierungsmechanismus mit variabler Länge, der Zeichen mit 1 bis 4 Bytes speichern kann.

Aufgrund historischer Probleme ist die UTF-8-Kodierung in MySQL kein echtes UTF-8, sondern eine verkürzte Version mit einer maximalen Länge von nur 3 Bytes. Bei der Verwendung einer UTF-8-Kodierung, die 4 Bytes belegt, wie etwa Emoji-Zeichen oder komplexe chinesische Schriftzeichen, treten Speicherausnahmen auf.

Ab 5.5.3 verwendet MySQL die utf8mb4-Kodierung, um vollständiges UTF-8 zu implementieren, wobei mb4 „most bytes 4“ bedeutet, was maximal 4 Bytes belegt. Ab 8.0 wird in einer bestimmten Version utf8mb4 als Standardzeichenkodierung verwendet.

Stellen Sie den Standardzeichensatz des Servers auf utf8mb4 ein.

Wenn beim Erstellen einer Datenbank kein Zeichensatz angegeben wird, wird der Standardzeichensatz des Servers verwendet. Den Komfort können Sie steigern, indem Sie den Standardzeichensatz des Servers auf utf8mb4 einstellen.

Bearbeiten der MySQL-Konfigurationsdatei

Sie müssen sich nur um 5 Systemvariablen kümmern. Wenn Sie alle auf utf8mb4 ändern, ist die Änderung erfolgreich:
Zeichensatzclient
Zeichensatzverbindung
Zeichensatzergebnisse
Zeichensatzserver
Zeichensatzdatenbank

my.cnf ist die Konfigurationsdatei von MySQL. Denken Sie daran, sie zu sichern, bevor Sie sie ändern:

vi /etc/meine.cnf

Nach dem Hinzufügen von default-character-set=utf8 unter [mysqld] kann der Server aus unbekannten Gründen nicht gestartet werden. Später habe ich es folgendermaßen geändert (MySQL 5.7):

[mysqld]
init_connect = 'SET-Sortierung_Verbindung = utf8mb4_unicode_ci' 
init_connect = "Namen festlegen utf8mb4" 
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_unicode_ci 
Zeichensatz-Client-Handshake überspringen
...
[Kunde]
Standardzeichensatz = utf8mb4

Die Standardeinstellung für MySQL 8.0 ist utf8mb4 und muss daher nicht geändert werden. Wenn Sie es ändern möchten, sieht die Konfigurationsdatei wie folgt aus:

[mysqld]
Datenverzeichnis=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-Datei=/var/run/mysqld/mysqld.pid
Zeichensatzserver = utf8mb4
[Kunde]
Standardzeichensatz = utf8mb4

Neustart und bestätigen

Sie können sehen, dass die Systemkodierung, Verbindungskodierung, Serverkodierung und Clientkodierung alle auf UTF-8 eingestellt sind:

mysql> Variablen wie "%char%" anzeigen;
+--------------------------------------+--------------------------------+
| Variablenname | Wert |
+--------------------------------------+--------------------------------+
| Zeichensatzclient | utf8mb4 |
| Zeichensatzverbindung | utf8mb4 |
| Zeichensatzdatenbank | utf8mb4 |
| Zeichensatz_Dateisystem | Binär |
| Zeichensatzergebnisse | utf8mb4 |
| Zeichensatzserver | utf8mb4 |
| Zeichensatzsystem | utf8 |
| Zeichensatzverzeichnis | /usr/share/mysql-8.0/charsets/ |
| Passwort validieren.Anzahl der Sonderzeichen | 1 |
+--------------------------------------+--------------------------------+
9 Zeilen im Satz (0,00 Sek.)

Zeichensatzbezogene Variablen in MySQL

character_set_client: Der Zeichensatz der Client-Anforderungsdaten
character_set_connection: Der Zeichensatz, in dem Daten vom Client empfangen und dann übertragen werden
character_set_database: Der Zeichensatz der Standarddatenbank. Dieser Zeichensatz wird unabhängig davon verwendet, wie die Standarddatenbank geändert wird. Wenn keine Standarddatenbank vorhanden ist, wird der von character_set_server angegebene Zeichensatz verwendet. Es wird empfohlen, diese Variable vom System selbst zu verwalten und nicht manuell zu definieren.
character_set_filesystem: Konvertiert den Dateinamen auf dem Betriebssystem in diesen Zeichensatz, d. h. konvertiert character_set_client in character_set_filesystem. Die Standardbinärdatei führt keine Konvertierung durch.
character_set_results: Zeichensatz des Ergebnissatzes
character_set_server: Der Standardzeichensatz des Datenbankservers
character_set_system: Der Zeichensatz, der zum Speichern von Systemmetadaten verwendet wird, immer utf8, keine Einstellung erforderlich

Geben Sie beim Erstellen einer Datenbank den Zeichensatz als utf8mb4 an

Wenn der Standardzeichensatz der Datenbank nicht utf8mb4 ist, können Sie den Zeichensatz beim Erstellen der Datenbank angeben:

DATENBANK ERSTELLEN mydb ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_unicode_ci;

Kollation

Neben der Speicherung müssen Zeichen auch sortiert oder verglichen werden. Es wird empfohlen, utf8mb4_unicode_ci zu verwenden, aber die Verwendung von utf8mb4_general_ci ist kein Problem.

Der Standardwert von MySQL 8.0 ist utf8mb4_0900_ai_ci, was ein Typ von utf8mb4_unicode_ci ist. Die spezifischen Bedeutungen sind wie folgt:

  • uft8mb4 bedeutet, dass das Kodierungsschema UTF-8 verwendet wird, wobei jedes Zeichen maximal 4 Bytes belegt.
  • 0900 bezieht sich auf die Version des Unicode-Sortieralgorithmus. (Der Unicode-Sortieralgorithmus ist eine Methode zum Vergleichen zweier Unicode-Zeichenfolgen, die den Anforderungen des Unicode-Standards entspricht.)
  • „ai“ steht für Akzentunempfindlichkeit. Das heißt, beim Sortieren gibt es keinen Unterschied zwischen e, è, é, ê und ë.
  • ci bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird. Das heißt, beim Sortieren gibt es keinen Unterschied zwischen p und P.

utf8mb4 wurde zum Standardzeichensatz, wobei utf8mb4_0900_ai_ci die Standardsortierung in MySQL 8.0.1 und höher ist. Zuvor war utf8mb4_general_ci die Standardsortierung. Da die Sortierung „utf8mb4_0900_ai_ci“ jetzt die Standardsortierung ist, können neue Tabellen standardmäßig Zeichen außerhalb der Basic Multilingual Plane speichern. Emojis können jetzt standardmäßig gespeichert werden. Wenn Sie Akzent- und Groß-/Kleinschreibung berücksichtigen müssen, können Sie stattdessen utf8mb4_0900_as_cs verwenden.

Zusammenfassen

Dies ist das Ende dieses Artikels über die MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci. Weitere relevante Inhalte zur MySQL-Kodierung utf8 und utf8mb4 finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Schritte zum Ändern des MySQL-Zeichensatzes auf UTF8 unter Linux
  • Beispiel für utf8mb4-Sortierung in MySQL
  • So ändern Sie die Kodierung der MySQL-Datenbank in utf8mb4
  • mysql charset=utf8 verstehen Sie wirklich, was es bedeutet
  • So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4
  • mysql verstümmelte Zeichen Latin1-Zeichen in UTF8-Details konvertiert

<<:  Detaillierte Erläuterung verschiedener praktischer Verwendungen virtueller Gerätedateien im Linux-System

>>:  Lösung für das Problem des wiederholten Auftauchens des Nachrichten-Popup-Fensters von Element

Artikel empfehlen

MySql 8.0.16-win64 Installations-Tutorial

1. Entpacken Sie die heruntergeladene Datei wie u...

Zusammenfassung zur Positionierung in CSS

Es gibt vier Arten der Positionierung in CSS, die...

Gemeinsame MySQL-Indexwirksamkeitsbedingungen und Indexungültigkeitsbedingungen

Inhaltsverzeichnis 1. Bedingungen für das Versage...

11 Möglichkeiten, Duplikate aus JS-Arrays zu entfernen

Bei der tatsächlichen Arbeit oder bei Interviews ...

MySQL-Methode zur Sperrensteuerung für Parallelität

Inhaltsverzeichnis Vorwort 1. Optimistisches Sper...

Implementierung des Vue-Top-Tags-Browserverlaufs

Inhaltsverzeichnis Unsinn Implementierte Funktion...

Informationen zum Fallstrickprotokoll der Vue3-Übergangsanimation

Inhaltsverzeichnis Hintergrund Problemort Weitere...

Drei Methoden zum Ändern des Hostnamens von Centos7

Methode 1: Hostnamectl-Änderung Schritt 1 Überprü...

So passen Sie die Höhe eines Divs an die Höhe des Browsers an

Diese alte Frage hat unzählige Frontend-Entwickler...

JavaScript verwendet Canvas zum Zeichnen von Koordinaten und Linien

In diesem Artikel wird der spezifische Code zur V...