先上代码,实测有效:
bool utf8_check(const char* str,size_t length)
{
size_t i = 0;
int nBytes = 0;////UTF8可用1-6个字节编码,ASCII用一个字节
unsigned char ch = 0;
while(i < length)
{
ch = *(str + i);
if(nBytes == 0)
{
if((ch & 0x80) != 0)
{
while((ch & 0x80) != 0)
{
ch <<= 1;
nBytes ++;
}
if((nBytes < 2) || (nBytes > 6))
{
return false;
}
nBytes --;
}
}
else
{
if((ch & 0xc0) != 0x80)
{
return false;
}
nBytes --;
}
i ++;
}
return (nBytes == 0);
}
详述字符编码:
https://blog.youkuaiyun.com/caixiaobai_1/article/details/103876783

本文分享了一段有效的UTF-8编码检测代码,通过逐字节解析,判断字符串是否符合UTF-8编码规则。深入探讨了UTF-8编码机制,包括1到6字节编码范围及错误检测逻辑。
333

被折叠的 条评论
为什么被折叠?



