Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 27972|Antwort: 0

[Quelle] Der Unterschied zwischen utf8 und utf8mb4 in MySQL

[Link kopieren]
Veröffentlicht am 21.4.2021, 18:01:22 | | | |
Unbekannter Zeichensatz: utf8mb4
https://www.itsvse.com/thread-3199-1-1.html
1. Einleitung

MySQL hat diese utf8mb4-Codierung nach 5.5.3 hinzugefügt, was bedeutet, dass die meisten Bytes 4 sind, und sie wird speziell verwendet, um mit Vier-Byte-Unicode kompatibel zu sein. Glücklicherweise ist utf8mb4 eine Übermenge von utf8, und es ist keine weitere Konvertierung erforderlich, außer die Kodierung auf utf8mb4 zu ändern. Natürlich reicht es zur Speicherplatzersparnis in der Regel aus, utf8 zu verwenden.

2. Inhaltsbeschreibung

Wie oben erwähnt, da utf8 die meisten chinesischen Zeichen speichern kann, warum sollte man utf8mb4 verwenden? Die maximale Zeichenlänge der von MySQL unterstützten UTF8-Codierung beträgt 3 Bytes, und wenn Sie auf ein breites Zeichen von 4 Bytes stoßen, fügen Sie eine Ausnahme ein. Das maximale Unicode-Zeichen, das von UTF-8 mit drei Bytes kodiert wird, ist 0xffff, was die grundlegende mehrsprachige Ebene (BMP) in Unicode ist. Das heißt, kein Unicode-Zeichen, das sich nicht in der grundlegenden Multitextebene befindet, kann nicht mit dem Zeichensatz utf8 von Mysql gespeichert werden. Dazu gehören Emojis (Emoji ist eine spezielle Unicode-Codierung, die häufig auf iOS- und Android-Handys verwendet wird) sowie viele selten verwendete chinesische Zeichen sowie alle neuen Unicode-Zeichen und mehr.

3. Die eigentliche Ursache des Problems

Das ursprüngliche UTF-8-Format verwendete ein bis sechs Bytes und konnte bis zu 31 Zeichen codieren. Die neueste UTF-8-Spezifikation verwendet nur ein bis vier Bytes und kann bis zu 21 Bit kodieren, was genau das ist, was alle 17 Unicode-Ebenen repräsentiert. utf8 ist ein Zeichensatz in Mysql, der nur UTF-8-Zeichen bis zu drei Bytes lang unterstützt, was die grundlegende Multitextebene in Unicode darstellt.

Warum unterstützt UTF8 in Mysql nur UTF-8-Zeichen mit maximal drei Bytes? Ich habe darüber nachgedacht, vielleicht weil Unicode bei der Entwicklung von Mysql keine Hilfsebene hatte. Zu dieser Zeit träumte das Unicode-Komitee noch davon, dass "65.535 Zeichen genug für die ganze Welt sind". Stringlängen in Mysql zählen Zeichen statt Bytes, und für CHAR-Datentypen müssen Strings lang genug sein. Bei Verwendung des utf8-Zeichensatzes ist die zu erhaltene Länge die längste utf8-Zeichenlänge multipliziert mit der Zeichenkettenlänge, daher ist es natürlich, die maximale utf8-Länge auf 3 zu begrenzen; zum Beispiel behält CHAR(100) Mysql 300 Bytes. Was den Grund betrifft, warum spätere Versionen keine 4-Byte-UTF-8-Zeichen mehr unterstützen, denke ich, dass eines aus Gründen der Abwärtskompatibilität liegt und das andere ist, dass Zeichen außerhalb der grundlegenden mehrsprachigen Ebene selten verwendet werden.

Um 4-Byte-UTF-8-Zeichen in Mysql zu speichern, wird der Zeichensatz utf8mb4 benötigt, der jedoch erst ab Version 5.5.3 unterstützt wird (siehe Version: Version auswählen(); )。 Ich denke, für bessere Kompatibilität solltest du immer utf8mb4 statt utf8 verwenden.  Für CHAR-typische Daten benötigt utf8mb4 mehr Speicherplatz, und gemäß der offiziellen Mysql-Empfehlung sollte VARCHAR statt CHAR verwendet werden.







Vorhergehend:Einfache Nutzung des ORM-Frameworks SqlSugar
Nächster:HTTP-Anforderungskopf Expect wird ausführlich erklärt
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com