当前位置: 代码迷 >> VC >> 连续2个字节 如何知道他是不是中文(续)
  详细解决方案

连续2个字节 如何知道他是不是中文(续)

热度:2741   发布时间:2013-02-25 00:00:00.0
连续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
  相关解决方案