Heim >Datenbank >MySQL-Tutorial >Wie interpretiert MySQL VARCHAR-Längen in UTF-8-Tabellen?

Wie interpretiert MySQL VARCHAR-Längen in UTF-8-Tabellen?

DDD
DDDOriginal
2024-11-21 07:25:11375Durchsuche

How Does MySQL Interpret VARCHAR Lengths in UTF-8 Tables?

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!

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