C语言判断这个字节是不是utf中文编码的起始字节
判断一个字节是否为UTF-8中文编码的起始字节,需要进行以下操作:
-
判断该字节的最高位是否为1,如果不是,则该字节不是UTF-8中文编码的起始字节。
-
统计该字节最高位连续为1的个数,如果该数目不为1、2、3,则该字节不是UTF-8中文编码的起始字节。
-
根据最高位连续为1的个数,判断该字节应该是几个字节的UTF-8编码。如果是1个字节,表示该字节只包含一个ASCII字符;如果是2、3、4个字节,则表示该字节是一个中文字符的一部分。
因此,判断一个字节是否为UTF-8中文编码的起始字节,可以使用以下代码实现:
int is_utf8_chinese_start(unsigned char byte) {
if ((byte & 0x80) == 0) { // 最高位为0
return 0;
}
int count = 0;
while ((byte & 0x80) != 0) { // 统计最高位连续为1的个数
count++;
byte <<= 1;
}
if (count != 1 && count != 2 && count != 3) { // 连续为1的个数不为1、2、3
return 0;
}
return 1;
}
该函数接受一个unsigned char类型的字节作为参数,返回一个int类型的值,表示该字节是否为UTF-8中文编码的起始字节。如果是起始字节,返回1;否则返回0。
原文地址: https://www.cveoy.top/t/topic/biWr 著作权归作者所有。请勿转载和采集!