utf8编码检测方法分享

时间:2021-05-19

复制代码 代码如下:
public bool isUtf8(byte[] rawText)
{
bool result = true;

if (rawText == null)
{
return !result;
}

int pos = 0;
while (pos < rawText.Length && result)
{
if ((rawText[pos] & 0x7F) == rawText[pos])
{
pos++;
}
else
{
int bitLen = 7;

while (((rawText[pos] >> bitLen) & 0x01) == 1 && bitLen > 0)
{
bitLen--;
}

int byteCount = 7 - bitLen;

if (byteCount > 1 && byteCount < 7)
{
for (int i = 1; i < byteCount; ++i)
{
if (pos + i >= rawText.Length || (rawText[pos + i] & 0xBF) != rawText[pos + i])
{
result = false;
break;
}
}

pos += byteCount;
}
else
{
result = false;
}
}
}

return result;
}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章