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é)數 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++使用模板實現(xiàn)單鏈表(類外實現(xiàn))
這篇文章主要為大家詳細介紹了C++使用模板實現(xiàn)單鏈表的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12