当前位置: 技术问答>linux和unix
Linux下UTF-8编码问题
来源: 互联网 发布时间:2017-05-15
本文导语: 本帖最后由 Programe_Lover 于 2014-04-12 13:38:40 编辑 有一个文件,里面每一行全部是连续的中文,我的程序是需要从那个文件里找到我要的中文字,我的代码实现是这样的(部分不完整): while(!((temp_char&0xE0)==0xE0)) ...
while(!((temp_char&0xE0)==0xE0)) in_stream.get(temp_char);//一直读取到第一个中文字符的第一个字节因为中文字在UTF-8编码中是三个字节,而且第一个字节肯定是1110XXXX,所以我就用这行代码来判断是否为中文字符:
while(temp_char!='n')
{
ch_char[0]=temp_char;
in_stream.get(temp_char);
ch_char[1]=temp_char;
in_stream.get(temp_char);
ch_char[2]=temp_char;
in_stream.get(temp_char);
int k=strcmp(ch_char,thechar); // the_char是需要找到的那个中文字
if(k==0) return head_pinyin;
else in_stream.get(temp_char);
}
in_stream.get(temp_char); //read the next line's head
while(!((temp_char&0xE0)==0xE0)) in_stream.get(temp_char);
但是,我发现当我把第一个中文字正确读出来后,剩下的中文字全部错误,当程序把第二个字的三个字节存储在ch_char中之后,我打印ch_char的值,显示的错误是不完全的顺序动作,应该就是字节顺序错了,但是我是一个字节一个字节读取的,字节顺序怎么会错误呢?求教大神啊!!!
|
看下这个:
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html
宽字节。。
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html
宽字节。。