Un point de code est une position numérique dans Unicode. Une valeur scalaire exclut la plage U+D800 à U+DFFF. UTF-16 utilise des unités de 16 bits : une valeur n’occupe donc pas toujours une position JavaScript. Distinguer ces mesures évite des comptes trompeurs et des parcours incorrects.
Les valeurs BMP utilisent une unité UTF-16
La plupart des écritures et symboles courants sont dans le plan multilingue de base. Une valeur U+0000–U+D7FF ou U+E000–U+FFFF utilise une unité UTF-16 de même valeur hexadécimale. D800–DFFF est réservé aux paires. UnicodeLens accepte les valeurs BMP valides, contrôles et usage privé compris, sans leur inventer nom ni sens.
Les valeurs supplémentaires forment une paire de substitution
Pour U+10000 ou plus, UTF-16 soustrait 0x10000 et répartit les bits entre substituts haut et bas. 😀 vaut U+1F600 mais ses unités sont D83D DE00 ; JavaScript mesure donc deux. UnicodeLens affiche une valeur, deux unités UTF-16 et quatre octets UTF-8, en nommant chaque mesure sans les appeler toutes caractères.
Un substitut isolé n’est pas une valeur scalaire
Un substitut haut sans bas immédiat, ou un bas sans haut, forme un UTF-16 mal formé. Certaines API le remplacent silencieusement et masquent le défaut. UnicodeLens s’arrête à la position de l’unité UTF-16 et efface l’ancien résultat. Le décodage refuse aussi U+D800–U+DFFF, qui ne peuvent devenir seuls du texte UTF-8.