Mysql
 sql >> Base de données >  >> RDS >> Mysql

Littéraux de caractères Unicode (hexadécimaux) dans MySQL

Vous pouvez spécifier littéraux hexadécimaux (ou même littéraux binaires ) en utilisant 0x , x'' , ou X'' :

select  0xC2A2;
select x'C2A2';
select X'C2A2';

Mais soyez conscient que le type de retour est une chaîne binaire, donc chaque octet est considéré comme un caractère. Vous pouvez le vérifier avec char_length :

select char_length(0xC2A2)

Si vous voulez UTF-8 à la place, vous devez utiliser convert :

select convert(0xC2A2 using utf8mb4)

Et nous pouvons voir que C2 A2 est considéré comme 1 caractère en UTF-8 :

select char_length(convert(0xC2A2 using utf8mb4))

De plus, vous n'avez pas à vous soucier des octets invalides car convert les supprimera automatiquement :

select char_length(convert(0xC1A2 using utf8mb4))

Comme on peut le voir, la sortie est 0 car C1 A2 est une séquence d'octets UTF-8 non valide.