Zum Inhalt springen
uencoder

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\uDE00

    High 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

Verwandte Tools

References