我的需求是从utf-8文件读入到内存,然后想遍历它来寻找某个特殊字符。我的代码片段://检查utf-8字符所占字节数#defineUTF8_CHAR_LEN(byte)(((0xE5000000>>((byte>>3)&0x1e))&3)+1)FILE*fp=fopen(PATH_TO_FILE,"r");char*buf=malloc(LENGTH_OF_FILE*sizeof(char));fgets(buf,LENGTH_OF_FILE,fp);intstep=0;for(;*(buf+step)!='\0';++step){intutf8_word_len=UTF8_CHAR_LEN(buf+step);//utf8是多字节的,我也确定了编码是utf-8所以不需要判断是否是其他的编码了if(utf8_word_len>1){charword[utf8_word_len];strncpy(word,(buf+step),urf8_word_len);step+=urf8_word_len;//这里就可以输出中文了,但是很奇怪啊,输出中文字符后还有一个很奇怪的字符//肯定是我哪里搞错了,还请高手指点.printf("%s\n",word);}else{printf("%c\n",buf+step);}}fclose(fp);free(buf);问题是,当文件遇到utf-8编码的中文,这段代码就输出乱码了。我知道%c是输出一个字节的内容,utf-8里面中文可能需要3个字节,所以有乱码会;但是自己不知道怎么处理utf-8字符的遍历。求高手解答.PS:我是想从字符指针去遍历utf-8的字符哦,不是想做编码转换的.
温温酱
qq_花开花谢_0
相关分类