Heim >Backend-Entwicklung >PHP-Problem >Einfach und klar! Der Unterschied zwischen utf8 und utf8mb4
1. Einführung
MySQL hat nach 5.5.3 die utf8mb4-Kodierung hinzugefügt, was bedeutet, dass die meisten Bytes 4 sind und mit 4 Bytes kompatibel sind. utf8mb4 ist eine Obermenge von utf8
Es ist keine weitere Konvertierung erforderlich, außer der Änderung der Kodierung in utf8mb4. Um Platz zu sparen, reicht es natürlich normalerweise aus, utf8 zu verwenden.
2. Inhaltsbeschreibung
Da utf8 die meisten chinesischen Zeichen speichern kann, warum sollten wir utf8mb4 verwenden? Es stellt sich heraus, dass die maximale Zeichenlänge der von MySQL unterstützten utf8-Kodierung 3 beträgt Im Abschnitt „
“ wird eine Ausnahme eingefügt, wenn ein 4 Byte breites Zeichen auftritt. Das maximale Unicode-Zeichen, das von Drei-Byte-UTF-8 codiert werden kann, ist 0xffff, das Basic Multilingual Plane (BMP) in Unicode. Mit anderen Worten: Alle Unicode-Zeichen, die sich nicht in der grundlegenden Multitextebene befinden, können nicht mit dem utf8-Zeichensatz von MySQL gespeichert werden. Einschließlich Emoji-Ausdrücken (Emoji
ist eine spezielle Unicode-Kodierung, die auf iOS- und Android-Telefonen üblich ist), vielen ungewöhnlichen chinesischen Zeichen und allen neuen Unicode-Zeichen usw. (das Fehlen des
Punkts in utf8) .
Wenn Computer Zeichen speichern, weisen sie normalerweise Speicherplatz entsprechend den verschiedenen Zeichentypen und Codierungsmethoden zu. Zum Beispiel die folgenden Kodierungsmethoden:
①Bei der ASCII-Kodierung belegt ein englischer Buchstabe (unabhängig von Groß- und Kleinschreibung) ein Byte Platz und ein chinesisches Zeichen zwei Bytes Platz . Wenn eine binäre Zahlenfolge als digitale Einheit in einem Computer gespeichert wird, handelt es sich im Allgemeinen um eine 8-Bit-Binärzahl, die in eine Dezimalzahl umgewandelt wird. Der Mindestwert ist 0 und der Höchstwert ist 255.
②Bei der UTF-8-Codierung belegt ein englisches Zeichen ein Byte Speicherplatz und ein chinesisches Zeichen (einschließlich traditionelles Chinesisch) drei Byte Speicherplatz.
③Bei der Unicode-Codierung belegt ein englisches Zeichen zwei Byte Speicherplatz und ein chinesisches Zeichen (einschließlich traditionelles Chinesisch) zwei Byte Speicherplatz.
④Bei der UTF-16-Codierung erfordert die Speicherung eines englischen alphabetischen Zeichens oder eines chinesischen Zeichens 2 Byte Speicherplatz (einige chinesische Zeichen im Unicode-Erweiterungsbereich erfordern 4 Byte zum Speichern).
⑤Bei der UTF-32-Codierung erfordert die Speicherung eines beliebigen Zeichens auf der Welt 4 Byte Speicherplatz.
Da utf8 mit den meisten Zeichen kompatibel ist, warum sollte man utf8mb4 erweitern?
Mit der Entwicklung des Internets sind viele neue Arten von Zeichen entstanden, wie zum Beispiel Emoji-Symbole, die kleinen gelben Gesichtsausdrücke, die wir normalerweise beim Chatten senden
gehört nicht zu den grundlegenden Multi-Plane-Unicode-Zeichen, was die Verwendung von utf8-Speicher in MySQL unmöglich macht. MySQL hat dann die utf8-Zeichen erweitert und die utf8mb4-Kodierung hinzugefügt.
Wenn Sie Benutzern daher die Verwendung spezieller Symbole beim Entwerfen einer Datenbank ermöglichen möchten, ist es am besten, die utf8mb4-Codierung zum Speichern zu verwenden, damit die Datenbank besser kompatibel ist. Dieses Design wird jedoch
führen zu mehr Kosten und viel Stauraum.
Das obige ist der detaillierte Inhalt vonEinfach und klar! Der Unterschied zwischen utf8 und utf8mb4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!