UTF-16 speichert Unicode-Zeichen als folgen von 2-Byte-Einheiten (16 Bit). Es ist ebenfalls variabel in der Länge: Ein Zeichen ist 2 oder 4 Bytes lang. Die meisten Zeichen (z. B. aus europäischen Schriften) benötigen nur 2 Bytes.
Zeichen außerhalb der sogenannten Basic Multilingual Plane (BMP, Codepoints > U+FFFF) benötigen 4 Bytes (zwei 16-Bit-„Surrogates“).
Beispiel:
Vorteile:
Code point range | Encoding Format |
---|---|
U+0000 – U+D7FF | 16-bit: 1 code unit (0000000000000000 - 1101101111111111) |
U+E000 – U+FFFF | 16-bit: 1 code unit (1110000000000000 - 1111111111111111) |
U+10000 – U+10FFFF | 2×16-bit: surrogate pair: 110110xxxxxxxxxx + 110111xxxxxxxxxx |