C語言中判斷一個char*是不是utf8編碼
更新時間:2017年06月19日 10:38:29 投稿:lqh
這篇文章主要介紹了C語言中判斷一個char*是不是utf8編碼的相關資料,需要的朋友可以參考下
C語言中判斷一個char*是不是utf8編碼
里我修改了一下, 純ASCII編碼的字符串也返回true, 因為UTF8和ASCII兼容
實例代碼:
int utf8_check(const char* str, size_t length) {
size_t i;
int nBytes;
unsigned char chr;
i = 0;
nBytes = 0;
while (i < length) {
chr = *(str + i);
if (nBytes == 0) { //計算字節(jié)數(shù)
if ((chr & 0x80) != 0) {
while ((chr & 0x80) != 0) {
chr <<= 1;
nBytes++;
}
if ((nBytes < 2) || (nBytes > 6)) {
return 0; //第一個字節(jié)最少為110x xxxx
}
nBytes--; //減去自身占的一個字節(jié)
}
} else { //多字節(jié)除了第一個字節(jié)外剩下的字節(jié)
if ((chr & 0xC0) != 0x80) {
return 0; //剩下的字節(jié)都是10xx xxxx的形式
}
nBytes--;
}
i++;
}
return (nBytes == 0);
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
淺談C語言中strcpy,strcmp,strlen,strcat函數(shù)原型
下面小編就為大家?guī)硪黄獪\談C語言中strcpy,strcmp,strlen,strcat函數(shù)原型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
淺析C++中memset,memcpy,strcpy的區(qū)別
本篇文章是對C++中memset,memcpy,strcpy的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-07-07

