Heim >Datenbank >MySQL-Tutorial >Warum nicht die UTF-8-Kodierung in MySQL verwenden?

Warum nicht die UTF-8-Kodierung in MySQL verwenden?

步履不停
步履不停Original
2019-06-19 14:01:042511Durchsuche

Warum nicht die UTF-8-Kodierung in MySQL verwenden?

MySQL UTF-8-Kodierung

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.

Reproduktion des Problems

Es gibt Datenbanktabellen wie folgt: UTF8-Kodierungsmethode

下载 (2).jpg

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.

Warum nicht die UTF-8-Kodierung in MySQL verwenden?

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:

Warum nicht die UTF-8-Kodierung in MySQL verwenden?

Wie erwartet wird ein Fehler gemeldet.

Lösen Sie das Problem

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.

Zusammenfassung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn