MySQL unterstützt UTF-8 seit Version 4.1 aus dem Jahr 2003. Allerdings wurde danach der derzeit beliebte UTF-8-Standard (RFC 3629) festgelegt. Aus diesem Grund stimmt UTF-8 in MySQL nicht mit UTF-8 in unserer täglichen Entwicklung überein, was zu einigen Problemen geführt hat. 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.
Es gibt Datenbanktabellen wie folgt: UTF8-Kodierungsmethode
Einen Datensatz in die Datenbank einfügen:
@Test public void testInsert() { User user = new User(); user.setUsername("\uD83D\uDE00 "); user.setPassword("123456"); userRepo.save(user); }
Dies ist nur ein Teil des Codes. Es spielt keine Rolle, ob Sie ihn nicht verstehen. Dies dient zum Einfügen eines Datensatzes in die Benutzertabelle. Wobei der Benutzername uD83DuDE00 ist.
Eigentlich ist uD83DuDE00 ein Emoji-Ausdruck.
Da der utf8-Zeichensatz in MySQL nur den Drei-Byte-UTF-8-kodierten Unicode-Bereich unterstützt und Emoji-Zeichen zum Vier-Byte-Kodierungsteil gehören, so das Programm wird voraussichtlich ausgeführt. Es wurde ein Fehler gemeldet. Führen Sie diesen Code aus:
Wie erwartet wird ein Fehler gemeldet.
Obwohl MySQLs UTF-8 fehlerhaft ist, hat MySQL (einschließlich Mariadb) diesen Fehler offiziell nicht behoben, sondern stattdessen die echte Version durch die Neuveröffentlichung von „utf8mb4“ unterstützt 2010. UTF-8. Um dieses Problem zu lösen, besteht die einzige Möglichkeit darin, die MySQL-Datenbank auf den Zeichensatz utf8mb4 einzustellen.
Dieses Problem wurde auch entdeckt, weil beim Speichern von Daten ein Emoji-Ausdruck gespeichert wurde. Als ich anfing, MySQL zu verwenden, entdeckte ich tatsächlich utf8mb4, verstand jedoch den Unterschied zwischen UTF8 und UTF8MB4 nicht. Wenn Sie nach dieser Lektion in Zukunft MySQL verwenden, stellen Sie den Zeichensatz einfach ehrlich auf utf8mb4 ein.
Weitere technische Artikel zum Thema MySQL finden Sie in der Spalte MySQL-Tutorial.
Das obige ist der detaillierte Inhalt vonWarum nicht die UTF-8-Kodierung in MySQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!