Я пытаюсь прочитать высокий символ Юникода из одной строки в другую. Для краткости я упрощу свой код, как показано ниже:
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
. Как я могу это сделать?