Aller au contenu
uencoder

UTF-16

UTF-16 est la forme d'encodage Unicode de longueur variable utilisant 2 ou 4 octets par point de code : les caractères du BMP occupent une unité de code de 16 bits et ceux des plans supplémentaires, une paire de substitution (2 unités).

Objectif

Équilibrer l'efficacité spatiale avec la couverture Unicode complète là où dominent les caractères du BMP, comme l'API Windows et la représentation interne des chaînes de Java.

Mécanisme

Un point de code du BMP (U+0000-FFFF) est stocké directement comme une unité de 16 bits. Pour un point supplémentaire (U+10000-10FFFF), on soustrait 0x10000 puis on scinde en deux moitiés de 10 bits, décalées de 0xD800 et 0xDC00, formant une paire de substitution. L'ordre des octets est indiqué par le BOM (U+FEFF).

Cas d’usage

  • Chaînes internes de l'API Windows
  • Représentation interne des chaînes Java/JavaScript
  • Stockage interne des String .NET
  • Stockage des noms de fichiers (NTFS)

Exemples

  • entrée
    A
    Output
    0x00 0x41

    UTF-16BE, 2 bytes

  • entrée
    😀
    Output
    0xD8 0x3D 0xDE 0x00

    A surrogate pair, 4 bytes

Erreurs courantes

Ignoring surrogate pairs, producing wrong character counts
Use code-point-aware APIs or surrogate-pair-aware iteration

Termes associés

Outils associés

References