Surrogate Pair
Ein Surrogatpaar ist der UTF-16-Mechanismus, der einen Codepunkt der ergänzenden Ebene (U+10000 bis U+10FFFF) mit zwei 16-Bit-Codeeinheiten darstellt.
Zweck
Lässt UTF-16 mit 16-Bit-Einheiten das gesamte Unicode jenseits des BMP abdecken, während für BMP-Zeichen die 1-Einheiten-Effizienz bleibt.
Mechanismus
Vom ergänzenden Codepunkt C wird 0x10000 abgezogen, womit ein 20-Bit-Wert in 0-0xFFFFF entsteht; die oberen 10 Bits plus 0xD800 ergeben das High-Surrogat (0xD800-0xDBFF), die unteren 10 Bits plus 0xDC00 das Low-Surrogat (0xDC00-0xDFFF). Die Dekodierung läuft umgekehrt.
Anwendungsfälle
- Emoji-String-Verarbeitung (z. B. 😀 = U+1F600)
- Stringlänge und -Iteration in JavaScript
- Wide-Character-Behandlung in Windows-APIs
- Darstellung alter Schriften und seltener Zeichen
Beispiele
- Eingabe
😀Output\uD83D\uDE00High surrogate D83D plus low surrogate DE00
Häufige Fehler
- Splitting a surrogate pair by truncating mid-pair, creating lone surrogates
- Iterate code points with for...of or Array.from
Verwandte Begriffe
UTF-16
UTF-16 ist Unicodes Form mit variabler Länge, die 2 oder 4 Bytes pro Codepunkt verwendet: BMP-Zeichen belegen eine 16-Bit-Codeeinheit, Zeichen der ergänzenden Ebenen ein Ersatzpaar (2 Einheiten). GLOSSAR
Unicode
Unicode ist der internationale Zeichenkodierungsstandard, der fast jedem Zeichen der Schriftsysteme der Welt einen eindeutigen Codepunkt (U+0000 bis U+10FFFF) zuweist, mit einem Coderaum von 1.114.112 Punkten. GLOSSAR
Code Point
Ein Codepunkt ist der numerische Wert, den der Unicode-Standard jedem Zeichen zuweist (U+0000 bis U+10FFFF), die Positionsnummer des Zeichens im Coderaum. GLOSSAR
BOM
Die BOM (Byte-Order-Mark) ist das Unicode-Zeichen U+FEFF, das an den Anfang eines Textstroms gesetzt wird, um Kodierungsform und Byte-Reihenfolge anzuzeigen. GLOSSAR