Warum wird in MySQL keine UTF-8-Kodierung verwendet?

Warum wird in MySQL keine UTF-8-Kodierung verwendet?

MySQL UTF-8-Kodierung

MySQL unterstützt UTF-8 seit Version 4.1 (im Jahr 2003), der derzeit gängige UTF-8-Standard (RFC 3629) wurde jedoch erst danach spezifiziert. Aus diesem Grund ist das UTF-8 in MySQL nicht konsistent mit dem UTF-8 in unserer täglichen Entwicklung, was zu einigen Problemen führt. MySQLs UTF-8 unterstützt nur bis zu drei Bytes pro Zeichen, während echtes UTF-8 bis zu vier Bytes pro Zeichen unterstützt.

Reproduktion des Problems

Die Datenbanktabelle sieht wie folgt aus: utf8-Kodierung

Fügen Sie der Datenbank einen Datensatz hinzu:

@Prüfen
öffentliche void testInsert() {
 Benutzer Benutzer = neuer Benutzer();
 Benutzer.setUsername("\uD83D\uDE00 ");
 Benutzer.setPassword("123456");
 userRepo.save(Benutzer);
}

Dies ist nur ein Teil des Codes. Es ist nicht schlimm, wenn Sie ihn nicht verstehen. Hier wird ein Datensatz in die Benutzertabelle eingefügt. Wobei der Benutzername \uD83D\uDE00 ist.

Tatsächlich ist \uD83D\uDE00 ein Emoji.

Da der UTF-8-Zeichensatz in MySQL nur den Unicode-Bereich der drei Byte langen UTF-8-Kodierung unterstützt und Emoji-Zeichen zum vier Byte langen Kodierungsteil gehören, meldet das Programm bei der erwartungsgemäßen Ausführung einen Fehler. Führen Sie diesen Code aus:

Wie erwartet wurde ein Fehler gemeldet.

Lösung des Problems

Obwohl MySQLs UTF-8 Mängel aufweist, haben die Verantwortlichen von MySQL (einschließlich MariaDB) diesen Fehler nicht behoben. Stattdessen wurde echtes UTF-8 durch die 2010 neu veröffentlichte Version „utf8mb4“ unterstützt. Wenn Sie dieses Problem lösen möchten, können Sie die MySQL-Datenbank nur auf den Zeichensatz utf8mb4 einstellen.

Zusammenfassen

Dieses Problem wurde entdeckt, weil beim Speichern der Daten ein Emoji-Ausdruck gespeichert wurde. Tatsächlich entdeckte ich utf8mb4, als ich begann, MySQL zu verwenden, verstand aber den Unterschied zwischen UTF8 und UTF8MB4 nicht. Nachdem ich diese Lektion gelernt habe, werde ich bei zukünftiger Verwendung von MySQL den Zeichensatz auf utf8mb4 einstellen.

Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So legen Sie die UTF-8-Kodierung in einer MySQL-Datenbank fest
  • MySQL GBK → UTF-8-Kodierungskonvertierung
  • Warum wird UTF-8 in MySQL nicht empfohlen?

<<:  So vergessen Sie das Passwort von Jenkins in Linux

>>:  WeChat-Applet-Picker - Mehrspalten-Selektor (Modus = MultiSelector)

Artikel empfehlen

So installieren Sie eine PHP7 + Nginx-Umgebung unter CentOS6.6

Dieser Artikel beschreibt, wie man eine PHP7 + Ng...

Detaillierte Erklärung des Linux-Kernel-Makros Container_Of

Inhaltsverzeichnis 1. Wie werden Strukturen im Ge...

Analyse des SELECT-Abfrageausdrucks in der MySQL-Datenbank

Ein großer Teil der Datenverwaltung besteht aus S...

CentOS8-Installationstutorial für JDK8/Java8 (empfohlen)

Vorwort Zuerst wollte ich es mit wget auf CentOS8...

MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

Wenn Sie MySQL zum Abfragen der Datenbank verwend...

Wissen Sie, warum Vue-Daten eine Funktion sind?

Erklärung auf der offiziellen Website: Wenn eine ...

JavaScript-Array-Deduplizierungslösung

Inhaltsverzeichnis Methode 1: Set: Es handelt sic...

Konstruktions- und Nutzungsprozess des Vue3.0-Projekts

Inhaltsverzeichnis 1. Projektkonstruktion 2: Verz...

So verbergen Sie Elemente im Web und ihre Vor- und Nachteile

Beispiel-Quellcode: https://codepen.io/shadeed/pe...

Design-Referenz: Erfolgsbeispiel für die Erstellung einer WordPress-Website

Jede dieser 16 Sites ist eine sorgfältige Lektüre ...