C语言中判断一个char*是不是utf8编码

2025-05-27 0 37

C语言中判断一个char*是不是utf8编码

里我修改了一下, 纯ASCII编码的字符串也返回true, 因为UTF8和ASCII兼容

实例代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31
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) { //计算字节数

if ((chr & 0x80) != 0) {

while ((chr & 0x80) != 0) {

chr <<= 1;

nBytes++;

}

if ((nBytes < 2) || (nBytes > 6)) {

return 0; //第一个字节最少为110x xxxx

}

nBytes--; //减去自身占的一个字节

}

} else { //多字节除了第一个字节外剩下的字节

if ((chr & 0xC0) != 0x80) {

return 0; //剩下的字节都是10xx xxxx的形式

}

nBytes--;

}

i++;

}

return (nBytes == 0);

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C语言中判断一个char*是不是utf8编码 https://www.kuaiidc.com/73957.html

相关文章

发表评论
暂无评论