Longueurs MySQL VARCHAR : naviguer dans la confusion entre octets et caractères
Dans MySQL, l'interprétation des longueurs de colonne VARCHAR(n) varie en fonction sur la version de la base de données. Dans les versions antérieures à 4.1, les longueurs de colonnes étaient définies en octets. Cependant, dans MySQL 5 et versions ultérieures, les longueurs sont interprétées en unités de caractères.
Nombre d'octets : MySQL version 4
Dans MySQL version 4, une colonne VARCHAR(32) pourrait accueillir 32 octets de données. Par conséquent, le stockage de caractères multi-octets dans ce champ dépendrait de l'encodage de caractères spécifique, nécessitant potentiellement plus d'octets par caractère.
Nombre de caractères : MySQL version 5 et ultérieure
Après MySQL version 4, la longueur des colonnes est déterminée par le nombre de caractères. Une colonne VARCHAR(32) en UTF-8 autorise 32 caractères. Les caractères UTF-8 multi-octets occuperont toujours plusieurs octets dans ce cas, mais le calcul de la longueur de colonne prend en compte le nombre de caractères et non les octets.
Confirmation de la documentation MySQL
Pour clarifier davantage, la documentation officielle de MySQL 5 indique : "MySQL interprète les spécifications de longueur dans les définitions de colonnes de caractères en unités de caractères... Cela s'applique à CHAR, VARCHAR et TEXT. types."
Impact UTF-8 sur la longueur maximale de VARCHAR
Fait intéressant, la longueur maximale d'une colonne VARCHAR est également affectée par le jeu de caractères. Par exemple, dans MySQL 5.0.3 et versions ultérieures, les caractères utf8 peuvent nécessiter jusqu'à trois octets par caractère. Par conséquent, une colonne VARCHAR utilisant UTF-8 peut avoir une longueur maximale déclarée de 21 844 caractères (65 535 octets / 3 octets par caractère).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!