我正在 Xojo 中编写一个 JSON 解析器。除了我无法弄清楚如何编码和解码不在基本多语言平面 (BMP) 中的 unicode 字符串这一事实之外,它的工作原理。换句话说,如果遇到大于\uFFFF
.
规格说:
为了转义不在基本多语言平面中的代码点,可以将字符表示为十二个字符的序列,编码对应于代码点的 UTF-16 代理对。例如,一个仅包含 G 谱号字符 (U+1D11E) 的字符串可以表示为“\uD834\uDD1E”。但是,JSON 文本的处理器是将这样的代理对解释为单个代码点还是显式代理对是由特定处理器确定的语义决定。
我不明白从U+1D11E
到的算法是什么\uD834\uDD1E
。我找不到任何关于如何“编码对应于代码点的 UTF-16 代理对”的解释。
例如,假设我想对笑脸字符 ( U+1F600
) 进行编码。作为 UTF-16 代理对,这将是什么?派生它的工作是什么?
有人可以请至少指出我正确的方向吗?