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

So verwenden Sie async await elegant in JS

Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...

Über visuelles Design und Interaktionsdesign

<br />Im gesamten Produktdesignprozess liege...

HTML-Formular und die Verwendung interner Formular-Tags

Code kopieren Der Code lautet wie folgt: <html...

So erweitern Sie die Festplattenpartition für das CentOS-System

Problem/Fehler/Szenario/Anforderung Die Festplatt...

Schnellstart-Tutorial zum Nginx-Dienst

Inhaltsverzeichnis 1. Einführung in Nginx 1. Was ...

MySQL-Datenbank-Indexreihenfolge durch Sortierung – detaillierte Erklärung

Inhaltsverzeichnis Die Ursache des Vorfalls Sorti...

Einfache Prinzipien für die Gestaltung des Webseiten-Layouts

Dieser Artikel fasst einige einfache Prinzipien d...

Tutorial zur Installation der mysql5.7.36-Datenbank in einer Linux-Umgebung

Download-Adresse: https://dev.mysql.com/downloads...

So überwachen und löschen Sie abgelaufene Sitzungen in Tomcat

Vorwort Ich habe zufällig entdeckt, dass die halb...