如何检验中文.
检验一个字符串是否全为中文,我之前用 if (name[i] & 0x80)可以,但是有个问题是会把一些符合读进去,比如输入
“小王!” 也算成了合法的,请问该怎么改
[解决办法]
与编码有关。以GB2312编码为例
汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,
可以这样判断
unsigned char uc_q;
unsigned char uc_w;
for (i = 0; i < n; i += 2)
{
uc_q = (unsigned char)name[i];
uc_w = (unsigned char)name[i + 1];
if (uc_q >= '\xB0' && uc_q <= '\xF7' && uc_w >= '\xA1' && uc_w <= '\xFE') {
/* 汉字 */;
} else {
/* 不是汉字 */
break;
}
}
http://zh.wikipedia.org/zh/GB_2312
http://ash.jp/code/cn/gb2312tbl.htm