将十六进制字符串转换为相应的表情符号字符串

fre*_*k91 4 c# windows-runtime windows-phone-8.1

我正在尝试创建一个""从此字符串开始的带有表情符号的字符串"D83DDC71"。为此,我尝试转换此 string 中的上面的字符串"\uD83D\uDC71"。

如果我使用此代码,它可以工作(文本框按预期显示):

textbox.Text += "\uD83D\uDC71";
Run Code Online (Sandbox Code Playgroud)

但如果我使用它,它不起作用(文本框显示确切的文本“\uD83D\uDC71”而不是单个字符):

textbox.Text += sender.Code.ToString("X").insert(4, @"\u").insert(0, @"\u");
Run Code Online (Sandbox Code Playgroud)

将表情符号的十六进制表示形式转换为相应的 C# 字符串 (UTF-16) 的正确方法是什么?

Jon*_*nna 6

好的。您似乎有一个字符串,它给出了字符 U+1F471 ( ) 的每个 UTF-16 代码单元的十六进制。

由于char表示 UTF-16 代码单元,因此将字符串拆分为两个 4 字符块,将其解析为十六进制的 int,将每个块转换为char,然后将它们组合成一个字符串:

var personWithBlondHair = ""
  + (char)int.Parse("D83DDC71".Substring(0, 4), NumberStyles.HexNumber)
  + (char)int.Parse("D83DDC71".Substring(4, 4), NumberStyles.HexNumber);
Run Code Online (Sandbox Code Playgroud)

根据https://dotnetfiddle.net/oTgXfG