コンテンツへスキップ
uencoder

Surrogate Pair

サロゲートペアは、補助平面のコードポイント(U+10000~U+10FFFF)を 2 個の 16 ビットコードユニットで表す UTF-16 の仕組みである。

目的

UTF-16 が BMP 以外の Unicode 全体を 16 ビットコードユニットでカバーしつつ、BMP 文字は 1 ユニットの効率を保てるようにする。

メカニズム

補助コードポイント C から 0x10000 を引くと 0~0xFFFFF の 20 ビット値が得られる。上位 10 ビット+0xD800 が上位サロゲート(0xD800-0xDBFF)、下位 10 ビット+0xDC00 が下位サロゲート(0xDC00-0xDFFF)である。復号は逆の計算を行う。

ユースケース

  • Emoji 文字列の扱い(例:😀 = U+1F600)
  • JavaScript の文字列の長さと繰り返し
  • Windows API でのワイド文字処理
  • 古代文字や希少文字のレンダリング

例

  • 入力
    😀
    Output
    \uD83D\uDE00

    High surrogate D83D plus low surrogate DE00

よくあるエラー

Splitting a surrogate pair by truncating mid-pair, creating lone surrogates
Iterate code points with for...of or Array.from

関連用語

関連ツール

References