Проблема с использованием символов Unicode в C#
У меня возникла проблема с выводом символов Unicode, которые имеют длину кода больше четырех символов.
Дело в том, что при попытке вывести в label1 символ Unicode-а, например, вот такой: U+1F4BE, программа почему то не захватывает последний символ. В данном примере это символ E.
(не буду прикреплять весь код, ведь о большой, а проблема только с выводе символов)
Никак не могу понять в чем проблема, ведь с кодами по типу U+2709 все прекрасно работает:
Также в начале кода написано следующее:
Ответы (1 шт):
В C# строки имеет кодировку по-умолчанию UTF16 для Windows.
Ваш юникод представлен для UTF32, а не UTF16. В UTF16 ваш юникод будет представлен двумя:
label1.Text = "\xD83D\xDCBE";
Чтобы не гуглить каждый раз перевод юникода из UTF32 в UTF16, просто используйте char.ConvertFromUtf32(unicode).
Для вашего примера выйдет так:
label1.Text = char.ConvertFromUtf32(0x1F4BE);

