Décodage des longueurs VARCHAR et UTF-8 dans MySQL
Lors de la création de champs VARCHAR dans MySQL, une idée fausse courante surgit concernant la capacité de stockage des données . L'utilisateur peut supposer qu'un champ VARCHAR(32) dans une table UTF-8 peut contenir 32 octets ou 32 caractères, selon la valeur la plus grande. Cependant, l'interprétation réelle dépend de la version de MySQL utilisée.
Version 4 par rapport à la version 5
Dans les versions de MySQL antérieures à 4.1, les longueurs VARCHAR étaient mesurées en octets. En conséquence, un champ VARCHAR(32) peut stocker jusqu'à 32 octets de données. Cependant, dans MySQL version 5 et ultérieure, les longueurs VARCHAR sont interprétées en unités de caractères. Par conséquent, un champ VARCHAR(32) dans une table UTF-8 peut contenir jusqu'à 32 caractères.
Documentation officielle de MySQL
Pour clarifier ce problème, la documentation officielle de MySQL La documentation 5 indique explicitement :
"MySQL interprète les spécifications de longueur dans les définitions de colonnes de caractères en unités de caractères. (Avant MySQL 4.1, colonne les longueurs ont été interprétées en octets.) Cela s'applique aux types CHAR, VARCHAR et TEXT. influencer la longueur maximale d'une colonne VARCHAR. Par exemple, les caractères UTF-8 peuvent nécessiter jusqu'à trois octets par caractère. Par conséquent, une colonne VARCHAR utilisant UTF-8 peut être déclarée avec un maximum de 21 844 caractères. Ceci est limité par la taille maximale des lignes de 65 535 octets.
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!