跳到主要内容
uencoder

Surrogate Pair

代理对是 UTF-16 中用两个 16 位码单元表示一个补充平面码点(U+10000 至 U+10FFFF)的机制。

用途

使 UTF-16 能用 16 位码单元覆盖超过 BMP 的全部 Unicode 码点,同时保留 BMP 字符的 1 单元效率。

机制

补充码点 C 减去 0x10000 得到 0-0xFFFFF 的 20 位值,高 10 位加 0xD800 得高代理(0xD800-0xDBFF),低 10 位加 0xDC00 得低代理(0xDC00-0xDFFF)。解码时反向计算。

用例

  • Emoji 字符串处理(如 😀 = U+1F600)
  • JavaScript 字符串长度与迭代
  • Windows API 宽字符处理
  • 古文字与罕见字符渲染

示例

  • 输入
    😀
    输出
    \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

相关词条

相关工具

参考链接