获取表情符号的(字符)Unicode 代码
本文关键字:字符 Unicode 代码 符号 获取 | 更新日期: 2023-09-27 17:58:21
我需要以 1F600 或 128512 等格式获取表情符号的代码。它现在只是我字符串中的一个符号。
我发现表情符号以Uniicode编码描述,但CharUnicodeInfo.GetNumericValue似乎不起作用。
我该怎么做?
还行
var q = CharUnicodeInfo.GetNumericValue(text[0]);
其中 text[0] 包含表情符号(在调试视图中它只是一张图片(返回 -1
你说
text[0]
包含表情符号
这不是真的。
text[0]
持有第一Char
。Char
是 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];
在调试器中,查看十六进制c1
和c2
。