Я пытаюсь прочитать высокий символ Юникода из одной строки в другую. Для краткости я упрощу свой код, как показано ниже:
public static void UnicodeTest()
{
var highUnicodeChar = "𝐀"; //Not the standard A
var result1 = highUnicodeChar; //this works
var result2 = highUnicodeChar[0].ToString(); // returns \ud835
}
Когда я назначаю highUnicodeChar непосредственно result1, он сохраняет свое буквальное значение 𝐀. Когда я пытаюсь получить доступ к нему по индексу, он возвращает \ud835. Насколько я понимаю, это суррогатная пара символов UTF-16, используемых для представления символа UTF-32. Я уверен, что эта проблема связана с попыткой неявно преобразовать char в string.
В конце концов, я хочу, чтобы result2 дал то же значение, что и result1. Как я могу это сделать?