C# 如何:将字符串中的unicode字符表示形式转换为实际的unicode字符

C# 如何:将字符串中的unicode字符表示形式转换为实际的unicode字符,c#,unicode,xamarin.forms,font-awesome,C#,Unicode,Xamarin.forms,Font Awesome,我在Xamarin应用程序中使用了font awesome。XamarinApp正在与之交谈的api返回一个fxxx字符串,以指示要显示的图标。在代码中我添加了\u,但它被视为字符串而不是unicode字符 var value = "f641"; newLabel.Text = char.Parse($"\\u{value}").ToString(); 我尝试了char.Parse,但它抛出了一个错误: System.FormatException:字符串长度必须正好为一个字符

我在Xamarin应用程序中使用了font awesome。XamarinApp正在与之交谈的api返回一个fxxx字符串,以指示要显示的图标。在代码中我添加了\u,但它被视为字符串而不是unicode字符

    var value = "f641";
    newLabel.Text = char.Parse($"\\u{value}").ToString();
我尝试了char.Parse,但它抛出了一个错误:

System.FormatException:字符串长度必须正好为一个字符


有什么建议吗?

您希望有一个
Char
保存私有代码点的值

您可以通过将其解析为其表示的十六进制值来执行此操作:

var input = "f641";
int p = int.Parse(input, System.Globalization.NumberStyles.HexNumber); // 63041
然后将其转换为
字符

char c = (char)p;
根据可能的代码点范围,您可能在
字符中没有足够的空间来存储代码点,因此@Panagiotis指出,请使用
char.ConvertFromUtf32(int)


但是您将有一个字符串,而不是一个字符。

。NET字符串是Unicode。在字符串中插入
\
u
只需再添加两个字符。我怀疑你把字符串文字中的Unicode和Unicode转义序列混淆了?这些序列表示单个字符。在编译期间,编译器本身会将它们转换为实际字符<代码>f461
无论如何都不是有效的Unicode转义序列。什么是
f641
呢?我们的想法是在从api传递f641之前加上\u,并将新字符串\uf641解析为字符。在fontawasome中,它是一些图标。在这种情况下,可以将实际字符而不是其十六进制值存储为字符串。为什么要将
2665
存储为字符串,而不仅仅是键入
?或者只是把整数值存储在某个地方?如果您不能这样做(为什么?),您可以解析十六进制值,然后使用将其转换为字符。@Pana这是一个很好的观点。或者简单地添加一个getter来为您执行此操作。可能重复、、等。
string chars = Char.ConvertFromUtf32(p);