读书人

双字节分割符的有关问题

发布时间: 2012-02-12 17:16:33 作者: rapoo

双字节分割符的问题
这是我看到的部分代码,判断是否为双字节分隔符。
char sChar[3];
sChar[2] = 0;

sChar[0]=sParagraph[nPosIndex];//Get a char
sChar[1]=0;
if(sParagraph[nPosIndex] <0)
{//double byte char
nPosIndex+=1;
sChar[1]=sParagraph[nPosIndex];
}
nPosIndex+=1;

我的问题是为什么if(sParagraph[nPosIndex] < 0)就可以判断其为双字节字符?
不是双字节符号的第一字节是在161~163么

[解决办法]

//解释转自其他来源
GB2312的字库里每个汉字两个字节,每个字节都是> 128的;但后来的扩展字符集就不是了(还是觉得不够大了),第一个字节> 128,第二个字节就无所谓了。
所以如果是扩展字符集的话,就只能从第一个字符开始判断,如果是 <128,那么是单字节字符;如果> 128,那么是个双字节字符。一直找到你要判断的字符为止。


if(sParagraph[nPosIndex] < 0) --> 1000 0000 --> 128

读书人网 >C语言

热点推荐