Проблема с использованием символов Unicode в C#

У меня возникла проблема с выводом символов Unicode, которые имеют длину кода больше четырех символов.

Дело в том, что при попытке вывести в label1 символ Unicode-а, например, вот такой: U+1F4BE, программа почему то не захватывает последний символ. В данном примере это символ E.

проблемный код с присвоением label1.Text значения U+1F4BE (не буду прикреплять весь код, ведь о большой, а проблема только с выводе символов)

Никак не могу понять в чем проблема, ведь с кодами по типу U+2709 все прекрасно работает:

код с присвоением label1.Text значения U+2709

Также в начале кода написано следующее:

код из начала


Ответы (1 шт):

Автор решения: iKuzmychov

В C# строки имеет кодировку по-умолчанию UTF16 для Windows.

Ваш юникод представлен для UTF32, а не UTF16. В UTF16 ваш юникод будет представлен двумя:

label1.Text = "\xD83D\xDCBE";

Чтобы не гуглить каждый раз перевод юникода из UTF32 в UTF16, просто используйте char.ConvertFromUtf32(unicode).

Для вашего примера выйдет так:

label1.Text = char.ConvertFromUtf32(0x1F4BE);
→ Ссылка