MySQL VARCHAR-Längen und UTF-8: Bytes versus Zeichen
Beim Erstellen eines VARCHAR-Felds in einer MySQL-Tabelle ist es wichtig zu verstehen, wie die angegebene Länge wird interpretiert. In MySQL-Versionen vor 4.1 wurden VARCHAR-Längen in Bytes definiert. Ab MySQL 4.1 werden Längen jedoch in Zeichen gezählt.
Das Feld VARCHAR(32) in einer UTF-8-Tabelle repräsentiert 32 Zeichen, nicht 32 Bytes. Dies liegt daran, dass UTF-8 eine Codierung mit variabler Länge ist, bei der jedes Zeichen mehrere Bytes (bis zu 4 Bytes) belegen kann.
In der offiziellen MySQL-Dokumentation für Version 5 heißt es:
"MySQL interpretiert Längenangaben in Zeichenspaltendefinitionen in Zeicheneinheiten. Dies gilt für CHAR, VARCHAR und die TEXT-Typen.“
Die maximale Länge einer VARCHAR-Spalte beträgt jedoch auch von UTF-8 beeinflusst. In MySQL 5.0.3 und höher ist die effektive maximale Länge durch die Zeilengröße (65.535 Bytes) und den verwendeten Zeichensatz begrenzt.
Zum Beispiel, da UTF-8-Zeichen bis zu 3 Bytes pro Zeichen erfordern können kann eine VARCHAR-Spalte mit UTF-8 mit maximal 21.844 Zeichen deklariert werden. Dies liegt daran, dass 21.844 multipliziert mit 3 (Bytes pro Zeichen) 65.532 ergibt, sodass ein Puffer von 3 Bytes für andere Spaltendaten innerhalb der maximalen Zeilengröße verbleibt.
Das obige ist der detaillierte Inhalt vonWie funktionieren VARCHAR-Längen in MySQL mit UTF-8: Bytes oder Zeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!