У меня возникли проблемы с преобразованием некоторого HEX в строку UTF-32. Я получаю это сообщение об ошибке
"Действительное значение UTF32 находится между 0x000000 и 0x10ffff включительно и не должно включать суррогатные значения кодовых точек (0x00d800 ~ 0x00dfff). Имя параметра: utf32"
при использовании этого кода
int decodedInt = Convert.ToInt32("D8F5", 16);
string decodedStr = char.ConvertFromUtf32(decodedInt);
когда я использую этот HEX "9FDB", он работает без каких-либо проблем. Что я делаю не так?
Кодовые точки в диапазоне 0xD800..0xDFFF используются UTF-16 для кодирования кодовых точек вне базовой многоязычной плоскости через суррогатную пару. Они никогда не встречаются в кодированном тексте UTF-32.
Вот почему ошибка сказала
не должны включать суррогатные значения кодовых точек (0x00d800 ~ 0x00dfff)