我需要得到像1F600或128512格式的表情符号代码。现在它只是我绳子上的一个符号。
我发现在Uniicode编码中描述的表情符号,但CharUnicodeInfo.GetNumericValue似乎不起作用。
我该怎么做?
好的
var q = CharUnicodeInfo.GetNumericValue(text[0]);
其中,文本持有emoticon (在调试视图中,它只是一幅图片)返回-1
发布于 2016-07-24 18:20:17
你说
text[0]
持有表情符号
这不是真的。
text[0]
持有第一个Char
。Char
是一个16位代码单元,但是表情符号不适合16位代码单元。它们由两个组合字符表示。
第一个组合字符本身不是一个有效的代码点,因此试图获取代码点值返回-1;一个无效的代码点。
那你是怎么得到代码点的?
在C#中返回字符代码点解释了如何获得所有代码点的列表。
如果只想获得第一个代码点,可以直接使用Char.ConvertToUtf32
:
int codepoint = Char.ConvertToUtf32(text, 0)
发布于 2016-07-24 18:01:40
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
视为十六进制。
https://stackoverflow.com/questions/38554892
复制相似问题