如何将表示 Unicode 字符的数字(大于 0xFFFF)转换为其在 C# 中的等效字符串

dex*_*ang 1 c# unicode

例如,CJK统一表意文字扩展A中的字符“”;它的unicode值为0x20000,因为C#中的char不能表示这样的字符,所以我想知道是否可以将它转换为字符串,我的问题是:

如果我给你一个像 0x20000 这样的数字,如何转换它并让我得到它的等效字符串,如“”

Jon*_*eet 7

您可以char.ConvertFromUtf32为此使用:

int utf32 = 0x20000;
string text = char.ConvertFromUtf32(utf32);
Run Code Online (Sandbox Code Playgroud)

string它本身是一个 UTF-16 代码单元序列,在本例中为 U+D840 和 U+DC00,您可以通过打印各个char值来查看它们:

int utf32 = 0x20000;
string text = char.ConvertFromUtf32(utf32);
Console.WriteLine(((int) text[0]).ToString("x4")); // d840
Console.WriteLine(((int) text[1]).ToString("x4")); // dc00
Run Code Online (Sandbox Code Playgroud)