我试图从一个字符串中读取一个高Unicode字符并将其复制到另一个字符串中。为了简洁起见,我将简化我的代码如下所示:
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-32字符的UTF-16字符代理对。我相当确定这个问题与尝试隐式转换char
为string
有关。
最终,我希望result2
产生与result1
相同的值。我该怎么做?