Обновленный вопрос ¹
Что касается классов символов, сравнения, сортировки, нормализации и сопоставления, какая версия или версии Unicode поддерживаются какими платформами .NET?
Исходный вопрос
Я немного смутно помню, что прочитал, что .NET поддерживает Unicode версии 3.0 и что внутренняя кодировка UTF-16 на самом деле не является UTF-16, но на самом деле использует UCS-2, что не то же самое. Например, кажется, что символы выше U + FFFF невозможны, т.е. рассмотрите:
string s = "\u1D7D9"; // ("Mathematical double-struck digit one")
и он хранит строку «ᵽ9»
.
Я в основном ищу исчерпывающие ссылки на ответы на следующие вопросы:
¹) Я обновил вопрос, так как со временем кажется более уместен в отношении ответов и для более широкого сообщества. Я оставил исходный вопрос вместо того, на какие части были даны ответы в комментариях. Также старый UCS-2 (без суррогатов) использовался в уже устаревших 32-битных версиях Windows, .NET всегда использовал UTF-16 (с суррогатами) внутри себя.