连续2个字节 怎么知道他是不是中文(续)
原问题:
现在要把数据从文本里读出来并显示到view上,因为文件比较大,所以决定用分屏显示。我的想法是每次读出1000字节然后显示在VIEW上,问题是 如果第1000字节和1001字节表示一个中文字,按照我的做法 不是把一个中文字分开了么,那么第一屏最后 和第二屏开始应该是乱麻,请问这种问题怎么解决。
根据大虾提示使用IsDBCSLeadByte函数,所以我写了一下函数(判断出是中文的前半个字节的话,就少打印一个字节保证输出正确的中文)
int CStockFile::ReadCText(unsigned char *buff)//读有中文的文本
{
pos=CFile::Seek( pos, CFile::begin );
pos2=CFile::Read(buff,lenperpage);
if(lenperpage==pos2)
{
if(IsDBCSLeadByte(buff[pos2-1])==TRUE )//是中文前半个字
pos2--;
}
pos=pos2+pos;
return pos2;
}
主程序
CStockFile XX( "A.TXT ",10);
BOOL X= XX.Open();
unsigned char buf[20];
int i,filelen=0;
while(filelen <XX.GetLength())
{
i=XX.ReadCText(buf);
filelen=filelen+i;
buf[i]=0;
TRACE ( "%s ",buf);
}
还是有问题 我程序有问题么,是不是IsDBCSLeadByte不是判断前半个中文字的,如果不是请大虾告诉我怎么解决上面的问题,
[解决办法]
去找一个中文字库(貌似到处都是)..把得来的2个字节的字符串拿到那里查一下。查询有结果返回TRUE.否则F