VARCHAR-Längen und UTF-8 in MySQL dekodieren
Beim Erstellen von VARCHAR-Feldern in MySQL entsteht ein häufiges Missverständnis hinsichtlich der Speicherkapazität von Daten . Der Benutzer kann davon ausgehen, dass ein VARCHAR(32)-Feld in einer UTF-8-Tabelle 32 Bytes oder 32 Zeichen aufnehmen kann, je nachdem, welcher Wert größer ist. Die tatsächliche Interpretation hängt jedoch von der verwendeten MySQL-Version ab.
Version 4 im Vergleich zu Version 5
In MySQL-Versionen vor 4.1 wurden VARCHAR-Längen in Bytes gemessen. Dementsprechend könnte ein VARCHAR(32)-Feld bis zu 32 Byte Daten speichern. In MySQL Version 5 und höher werden VARCHAR-Längen jedoch in Zeicheneinheiten interpretiert. Daher kann ein VARCHAR(32)-Feld in einer UTF-8-Tabelle bis zu 32 Zeichen enthalten.
Offizielle MySQL-Dokumentation
Um dieses Problem zu klären, das offizielle MySQL In der Dokumentation Nr. 5 heißt es ausdrücklich:
„MySQL interpretiert Längenangaben in Zeichenspaltendefinitionen in Zeicheneinheiten. (Vor MySQL 4.1 wurden Spaltenlängen in Bytes interpretiert.) Dies gilt für CHAR, VARCHAR und die TEXT-Typen.“
Auswirkungen von UTF-8
Darüber hinaus kann der verwendete Zeichensatz die maximale Länge einer VARCHAR-Spalte beeinflussen. Beispielsweise können UTF-8-Zeichen bis zu drei Bytes pro Zeichen erfordern. Daher kann eine VARCHAR-Spalte mit UTF-8 mit maximal 21.844 Zeichen deklariert werden. Dies wird durch die maximale Zeilengröße von 65.535 Bytes eingeschränkt.
Das obige ist der detaillierte Inhalt vonWie interpretiert MySQL VARCHAR-Längen in UTF-8-Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!