WP8.1 上 XAML 和 C# 中的表情符号具有更长的 Unicode 范围

Emojis in XAML & C# on WP8.1 with longer Unicode range

我在我的 WP8.1 应用程序中看到一个非常奇怪的行为。在我的 XAML 中,我有以下内容,它完美地转化为一个漂亮的 😠 (愤怒的脸),一切都好。

<TextBlock x:Name="FaceTextBlock" Text="&#x1F620;" FontFamily="Segoe UI Symbol" />

但是当我尝试以编程方式执行此操作时,它的行为就像最后一位数字“0”不存在一样:

FaceTextBlock.Text = "\u1F620"; // This behaves like "\u1F62" and is displayed  as "ὢ0"

作为反例,我尝试使用简单的 "Plane Emoji" ✈ "U+2708" 效果很好。知道我在这里缺少什么吗?会不会是文化的原因?

FaceTextBlock.Text = "\u2708"; // This works fine

C# 中的 Unicode 字符转义使用 4 位或 8 位十六进制数字表示,因此您必须使用 8 位数字编写表情符号:

"\U0001F620"

注意 2.4.1 Unicode character escape sequences 中记录的大写字母 U。