Maison > Article > base de données > La fonction MySQL BIT_LENGTH() multi-octets est-elle sûre ?
Tout comme la fonction LENGTH(), la fonction MySQL BIT_LENGTH() n'est pas une fonction sécurisée multi-octets. Comme nous savons que la différence de résultat entre les fonctions sécurisées multi-octets, comme CHAR_LENGTH() ou CHARACTER_LENGTH(), et la fonction BIT_LENGTH() est particulièrement pertinente pour Unicode, dans laquelle la plupart des caractères sont codés sur deux octets ou pertinents pour UTF. -8 où le nombre d'octets varie. Ceci est démontré dans l'exemple ci-dessous -
mysql> Select BIT_LENGTH('tutorialspoint'); +------------------------------+ | BIT_LENGTH('tutorialspoint') | +------------------------------+ | 112 | +------------------------------+ 1 row in set (0.00 sec)
Le jeu de résultats ci-dessus montre que la longueur en bits de la chaîne « tutorialspoint » est de 112 car elle n'est pas encore convertie en caractère Unicode. La requête suivante le convertit en caractère Unicode −
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
在将字符串转换为Unicode后,结果为224而不是112,因为在Unicode中,一个字符占用2个字节,如下所示 −
mysql> Select BIT_LENGTH(@A); +----------------+ | BIT_LENGTH(@A) | +----------------+ | 224 | +----------------+ 1 row in set (0.00 sec)
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!