C# 在代码隐藏中使用时,Unicode字符(U+;1FXYZ)输出不正确

C# 在代码隐藏中使用时,Unicode字符(U+;1FXYZ)输出不正确,c#,xaml,unicode,C#,Xaml,Unicode,在我的代码隐藏中,我试图返回unicode字符的十六进制代码 我正在尝试为Segoe UI符号字体输出以下任一字符:。例如,“U+1F60A” 如果我通过我的xaml这样做,例如: FontFamily="Segoe UI Symbol" Text="😊" 那么它工作得很好 但是,如果我绑定该值以通过.cs转换器类检索它,则不会显示正确的字符: FontFamily="Segoe UI Symbol" Text="{Binding Pivot7Days.EmojiWee

在我的代码隐藏中,我试图返回unicode字符的十六进制代码

我正在尝试为Segoe UI符号字体输出以下任一字符:。例如,“U+1F60A”

如果我通过我的xaml这样做,例如:

FontFamily="Segoe UI Symbol" Text="😊"
那么它工作得很好

但是,如果我绑定该值以通过.cs转换器类检索它,则不会显示正确的字符:

FontFamily="Segoe UI Symbol" Text="{Binding Pivot7Days.EmojiWeekendSummary, Converter={StaticResource EmoticonConverter}}"
转换器等级:

switch (input)
{
    case "happy":
        return "\u1F60A";
    case "sad":
        return "\u1F60B";
    default:
        return "\u1F610";
}
我在返回的字符串中得到一个完全不同的字符,后跟最后一个字符,例如“A”、“B”或“0”。例如,当我看到一张舌头伸出的脸(U+1F60B)时,我会得到以下结果:


我是否在代码隐藏中使用了不正确的转义序列?

U+FFFF之外的字符不能直接写入
\U…
文字(如果您尝试这样做,只使用前四个十六进制数字,您会得到一个错误的字符),但作为代理对,或者更简单地说,使用八位
\U
文字,例如,U+1F60A的
“\U0001F60A”