更新的问题 ¹
关于字符类、比较、排序、规范化和排序规则,哪些 .NET 平台支持哪个 Unicode 版本或版本?
原始问题
我有点模糊地记得 .NET 支持 Unicode 版本 3.0,并且内部的 UTF-16 编码实际上并不是真正的 UTF-16,而是使用的 UCS-2,这是不同的。例如,似乎不可能存在 U+FFFF 以上的字符,即考虑:
string s = "\u1D7D9"; // ("Mathematical double-struck digit one")
它将字符串"ᵽ9"
存储。
我基本上在寻找以下问题的明确参考答案:
- .NET中不是真正的UTF-16,那它是什么?
- .NET支持哪个版本的Unicode?
- 如果最近的版本不受支持或计划在不久的将来不受支持,是否有人知道(非)商业库或我如何解决此问题的方法?
¹)随着时间的流逝,我更新了问题,因为这似乎更符合答案和更大的社区。我保留了原始问题,其中部分已在评论中回答。而且在现代32位Windows版本中使用了旧的UCS-2(没有代理),.NET始终在内部使用UTF-16(带有代理)。
\U
(我猜以前从没用过),然后错误地得出结论认为不支持更高的平面。 - Abel