C++ 怎么检测汉字字符

C++ 如何检测汉字字符
今天测试时候遇到一个奇怪的现象。之前对一个字符串会做乱码检测,认为
if (((BYTE)Name[i] > 0x7A)&& //"z"检查
((BYTE)Name[i] < 0xA0) ) //汉字
{
return FALSE;
}
也就是说只有 > 0xA0 才认为是汉字,但是今天测到一个字"昇",这个字居然是:149,78 这两个都比0xA0小,并且第二个字符78 比128都小,并且ASCII中是'N'。
请问怎么样才能很好的检测汉字呢?
------解决思路----------------------
GBK编码格式:
字符有一字节和双字节编码,00–7F范围内是一位,和ASCII保持一致,此范围内严格上说有96个字符和32个控制符号。
之后的双字节中,前一字节是双字节的第一位。总体上说第一字节的范围是81–FE(也就是不含80和FF),第二字节的一部分领域在40–7E,其他领域在80–FE。

简单的说,第一个字节为81-FE,第二个字节为40-7E、80-FE。
------解决思路----------------------
   //GBK汉字内码范围(不包括A1xx~A9xx的标点符号英文字母特殊符号等)
   //区码  ,位码
   //81-A0 ,40-7E 80-FE
   //AA-AF ,40-7E 80-A0
   //B0-D6 ,40-7E 80-FE
   //D7    ,40-7E 80-F9
   //D8-F7 ,40-7E 80-FE
   //F8-FE ,40-7E 80-A0