获取表情符号的(字符)Unicode 代码

本文关键字:字符 Unicode 代码 符号 获取 | 更新日期: 2023-09-27 17:58:21

我需要以 1F600 或 128512 等格式获取表情符号的代码。它现在只是我字符串中的一个符号。

我发现表情符号以Uniicode编码描述,但CharUnicodeInfo.GetNumericValue似乎不起作用。

我该怎么做?

还行

var q = CharUnicodeInfo.GetNumericValue(text[0]);

其中 text[0] 包含表情符号(在调试视图中它只是一张图片(返回 -1

获取表情符号的(字符)Unicode 代码

你说

text[0]包含表情符号

这不是真的。

text[0]持有第一CharChar是 16 位代码单元,但表情符号不适合 16 位代码单元。它们由两个组合字符表示。

第一个组合字符本身不是有效的代码点,因此尝试获取代码点值返回 -1;无效的代码点。

那么如何获取代码点呢?

C# 中字符的返回代码点介绍了如何获取所有代码点的列表。

如果只想获取第一个代码点,可以直接使用 Char.ConvertToUtf32

int codepoint = Char.ConvertToUtf32(text, 0)

CharUnicodeInfo.GetNumericValue 为您返回 -1 的原因是您要传递的字符不是数字字符。您需要阅读文档。

该块中表情符号的 Unicode 值是 32 位值。例如,0x1F600。因此,它将是由两个 16 位值组成的 32 位值。因此,如果您的字符串包含该表情符号,则字符串的长度将为 2,两个char值将为 0x0001 和 0xF600。将char值转换为short,并将其视为十六进制。例如:

short c1 = (short)text[0];
short c2 = (short)text[1];

在调试器中,查看十六进制c1c2