utf-8格式中文字符:[0xE4B880 , 0xE9BEA0]
unicode格式中文字符:[0x4E00 , 0x9FA0]
{
bool result = false;
int flag = 0;
const char* name = text.data();
while (*name && flag < text.size())
{
if ((*name & 0xE0) == 0xE0)//三字节--utf-8 中文基本上都是三字节
{
int _name = ((*name & 0x0000ff) << 16) | ((*(name+1) & 0x0000ff) << 8) | *(name+2) & 0xff;
CCLOG("########## %x",_name);
if (_name >= 0xE4B880 && _name <= 0xE9BEA0)//汉字
{
name += 3;
flag += 3;
}
else//非汉字
{
CCMessageBox("昵称由中文、字母、数字组成!", "");
result = true;
break;
}
}
else if ((*name & 0xC0) == 0xC0)//两字节 同上(未测试)
{
int _name = ((*name & 0x00ff) << 8) + *(name+1) & 0xff;
CCLOG("---------------------- %x",_name);
if (_name >= 0x4E00 && _name <= 0x9FA0)
{
name += 2;
flag += 2;
}
else
{
CCMessageBox("昵称由中文、字母、数字组成!", "");
result = true;
break;
}
}
else if ((*name >= '0' && *name <= '9') || (*name >='a' && *name <= 'z') || (*name >= 'A' && *name <= 'Z'))
{
//英文 数字
name ++;
flag ++;
}
else
{
CCMessageBox("昵称由中文、字母、数字组成!", "");
result = true;
break;
}
}
return result;
}