Codet (code unit)
Un codet (code unit en anglais) correspond au composant élémentaire utilisé par un système d'encodage des caractères (comme UTF-8 ou UTF-16). Un système d'encodage des caractères utilise un ou plusieurs codets pour encoder un point de code Unicode.
En UTF-16 (le système d'encodage utilisé pour les chaînes de caractères en JavaScript), les codets sont des valeurs sur 16 bits. Cela signifie que les opérations pour manipuler les index ou obtenir la longueur d'une chaîne de caractères manipulent ces codets de 16 bits. Toutefois, ces unités ne correspondent pas toujours exactement à ce que nous interprétons comme étant des caractères.
Par exemple, certains caractères avec des diacritiques comme des accents peuvent être représentés en UTF-16 à l'aide de deux codets :
const maChaine = "\u006E\u0303";
console.log(maChaine); // ñ
console.log(maChaine.length); // 2
De plus, 16 bits ne suffisent pas à exprimer tous les points de code définis par Unicode. De nombreux points de code Unicode sont encodés à l'aide d'une paire de deux codets UTF-16 (parfois appelés demi-codets ou surrogate pair en anglais) :
const visage = "🥵";
console.log(visage.length); // 2
La méthode JavaScript codePointAt()
de l'objet String
permet de récupérer les codets Unicode à partir de la forme encodée :
const visage = "🥵";
console.log(visage.codePointAt(0)); // 129397 soit 0x1F975 en hexadécimal