根据Unicode规范,UTF-16编码形式将U+0000..U+D7FF和U+E000..U+FFFF范围内的每个Unicode标量值分配给一个具有相同数值的无符号16位代码单元,并将U+10000..U+10FFFF范围内的每个Unicode标量值分配给代理对。术语“标量值”是指Unicode代码点,这是一系列抽象概念,必须通过不同的编码形式(UTF-16等)进行编码成特定的字节序列。因此,似乎这段摘录的要点在于,并非所有代码点都可以容纳在一个UTF-16代码单元(两个字节)中,其中一些应该被编码为一对代码单元 - 4个字节(称为“代理对”)。然而,“标量值”这个术语的定义如下:任何Unicode代码点,除了高代理项和低代理项代码点。
等一下... Unicode 有代理码点吗?当UTF-16可以使用4个字节来表示标量值时,这是什么原因呢?有人能解释一下这种理论基础以及UTF-16如何使用这些代理码点吗?