int IsEmojiChar(wchar_t _ch1, wchar_t _ch2)
{
if ((0XD800 <= _ch1) && (_ch1 <= 0XDBFF))
{
UINT _tmp = ((_ch1 - 0XD800) * (UINT)0X400) + (_ch2 - 0XDC00) + (UINT)0X10000;
if (0X1D00 <= _tmp && _tmp <= 0X1F77F)
{
return 2;
}
}
else if (0X2100 <= _ch1 && _ch1 <= 0X27FF && _ch1 != 0X263B)
{
return 1;
}
else if (0X2B05 <= _ch1 && _ch1 <= 0X2B07)
{
return 1;
}
else if (0X2934 <= _ch1 && _ch1 <= 0X2935)
{
return 1;
}
else if (0X3297 <= _ch1 && _ch1 <= 0X3299)
{
return 1;
}
else if (_ch1 == 0xa9 || _ch1 == 0xae || _ch1 == 0x303d || _ch1 == 0x3030 || _ch1 == 0x2b55 || _ch1 == 0x2b1c
|| _ch1 == 0x2b1b || _ch1 == 0x2b50 || _ch1 == 0x231a) {
return 1;
}
else if (_ch2 == 0x20e3)
{
return 2;
}
return 0;
}
返回0 说明不是表情,返回1 说明第一个字符是表情,返回2说明连续两个都是表情。如果返回2,第二个字符不需要再检查,下一次直接检查第三个字符.