判读文本编码是否为UTF8

(----转载-----,忘记出处了抱歉)

private bool IsUtf8(byte[] buff)

{

for (int i = 0; i < buff.Length; i++)

{

if ((buff[i] & 0xE0) == 0xC0) // 110x xxxx 10xx xxxx

{

if ((buff[i + 1] & 0x80) != 0x80)

{

return false;

}

}

else if ((buff[i] & 0xF0) == 0xE0) // 1110 xxxx 10xx xxxx 10xx xxxx

{

if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80)

{

return false;

}

}

else if ((buff[i] & 0xF8) == 0xF0) // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

{

if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80 || (buff[i + 3] & 0x80) != 0x80)

{

return false;

}

}

}

return true;

}

相关推荐
獨枭5 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
清风与日月6 小时前
c# 上位机作为控制端与下位机通信方式
单片机·嵌入式硬件·c#
烛阴7 小时前
从零开始掌握C#核心:变量与数据类型
前端·c#
yue0088 小时前
C# 生成指定位数的编号
开发语言·c#
红黑色的圣西罗9 小时前
C# List.Sort方法总结
开发语言·c#
夏霞12 小时前
c# ASP.NET Core SignalR 客户端配置自动重连次数
c#·.netcore
2501_9307077813 小时前
使用C#代码在 Word 文档中查找并替换文本
开发语言·c#·word
一个帅气昵称啊14 小时前
在.NET中使用RAG检索增强AI基于Qdrant的矢量化数据库
ai·性能优化·c#·.net·rag·qdrant
还是大剑师兰特16 小时前
C#面试题及详细答案120道(86-95)-- 进阶特性
c#·大剑师