UTF8编码字符串截取

对采用UTF8编码的字符进行截取.指定起始字符和终止字符,把相应的UTF8编码串复制到缓冲区中.

/*
* text:采用UTF8编码存储的字符串.
* s:截取时的起始字符,从0开始.
* e:截取的字符数.为10则截取10个字符.
* buffer:存储截取的字符串
*/
int
StringUTF8Crop(const char* text,const int s,const int e,char* buffer){ int i=0,count=0; int k=0; char ch; while(count<s&&text[i]){ count++; ch=text[i]; if(ch&0x80){ while(ch&0x80){ ch<<=1; i++; } } else i++; } while(count<s+e&&text[i]){ count++; ch=text[i]; if(ch&0x80){ while(ch&0x80){ ch<<=1; buffer[k++]=text[i++]; } } else{ buffer[k++]=text[i++]; } } return k; }
int main(int args,char* argv[]){
    HANDLE x;
    HANDLE y;
    HANDLE z;
    char* text="一二三四五六七八九十2";
    char buffer[100]={0};
    StringUTF8Crop(text,1,10,buffer);
    printf("buffer :%s\n",buffer);
    return 0;
}

输出结果 :

二三四五六七八九十2

注意:

windows下会显示乱码.原因是windows控制台默认是gbk编码.需要更改代码页为65001并且还要更改字体.

posted @ 2017-04-06 16:42  夜梦多离殇  阅读(426)  评论(0编辑  收藏  举报