Javascript JSON解析器如何对不在基本多语言平面中的unicode字符进行编码?

Javascript JSON解析器如何对不在基本多语言平面中的unicode字符进行编码?,javascript,json,unicode,xojo,Javascript,Json,Unicode,Xojo,我正在用Xojo编写JSON解析器。除了我不知道如何对不在基本多语言平面(BMP)中的unicode字符串进行编码和解码之外,它还能工作。换句话说,如果遇到大于\uFFFF的内容,我的解析器就会死亡 说明书上说: 要转义不在基本多语言平面中的代码点, 该字符可以表示为12个字符的序列, 编码对应于代码点的UTF-16代理项对。所以 例如,仅包含G谱号字符(U+1D11E)的字符串 可以表示为“\uD834\uDD1E”。但是,是否为 JSON文本将此类代理项对解释为单个代码点或 作为显式代理对,

我正在用Xojo编写JSON解析器。除了我不知道如何对不在基本多语言平面(BMP)中的unicode字符串进行编码和解码之外,它还能工作。换句话说,如果遇到大于
\uFFFF
的内容,我的解析器就会死亡

说明书上说:

要转义不在基本多语言平面中的代码点, 该字符可以表示为12个字符的序列, 编码对应于代码点的UTF-16代理项对。所以 例如,仅包含G谱号字符(U+1D11E)的字符串 可以表示为“\uD834\uDD1E”。但是,是否为 JSON文本将此类代理项对解释为单个代码点或 作为显式代理对,是一种语义决策 由特定的处理器决定

我不明白的是从
U+1D11E
\uD834\uDD1E
的算法是什么。我找不到任何关于如何“编码对应于代码点的UTF-16代理项对”的解释

例如,假设我想对笑脸字符进行编码(
U+1F600
)。作为UTF-16代理项对,这将是什么?派生它的工作是什么


有人能至少给我指出正确的方向吗?

摘自上面评论中Remy Lebeau链接的维基百科文章():


编码U+10437(“从
U+1D11E
\uD834\uDD1E
的算法是什么?”-,正如JSON规范所说。您知道UTF-16通常是如何工作的,不是吗?如果不知道,请阅读其详细记录的算法。在本例中,UTF-16将代码点U+1D11E编码为两个代码单元0xD834和0xDD1E,然后JSON以
\uxxx
字符串格式进行编码。代码点U+1F600的UTF-16代理项对是0xD83D 0xDE00,因此JSONI中的
\uD83D\uDE00
阅读维基百科上的链接文章-这非常有帮助。我将用一个例子回答我自己的问题,供其他人参考。感谢你检查我的数学。你不需要实际进行此转换。