检测字节流是否是UTF8编码
来源:互联网 发布:id下载软件安装 编辑:程序博客网 时间:2024/06/07 00:01
几天前偶尔看到有人发帖子问“如何自动识别判断url中的中文参数是GB2312还是Utf-8编码”
也拜读了wcwtitxu使用巨牛的正则表达式检测UTF8编码的算法。
使用无数或条件的正则表达式用起来却是性能不高。
刚好曾经在项目中有类似的需求,这里把处理思路和整理后的源代码贴出来供大家参考
先聊聊原理:
UTF8的编码规则如下表
看起来很复杂,总结起来如下:
ASCII码(U+0000 - U+007F),不编码
其余编码规则为
- 第一个Byte二进制以形式为n个1紧跟个0 (n >= 2), 0后面的位数用来存储真正的字符编码,n的个数说明了这个多Byte字节组字节数(包括第一个Byte)
- 结下来会有n个以10开头的Byte,后6个bit存储真正的字符编码。
因此对整个编码byte流进行分析可以得出是否是UTF8编码的判断。
根据这个规则,我给出的C#代码如下:
再附上单元测试代码:
另:
如果是判断一个文件是否使用了UTF8编码,不一定非用这种方法,因为通常以UTF8格式保存的文件最初两个字符是BOM头,标示该文件使用了UTF8编码。
参考:
维基百科:http://en.wikipedia.org/wiki/UTF-8
- 检测字节流是否是UTF8编码
- 检测字节流是否是UTF8编码
- 检测字节流是否是UTF8编码
- 检测字节流是否是UTF8编码
- 检查字符串是否是UTF8编码
- java判断文件是否是utf8编码
- 检测字节流的编码类型(GBK,UNICODE,GB18030,UTF8..)
- 检测某个txt文件是gbk编码还是utf8编码
- 获取字节流编码(UTF8, unicode等)
- PHP检测字符串是否为UTF8编码的常用方法
- utf8字符编码检测
- vc 如何判断一个字符串是否是UTF8编码
- (转)如何判断一个字符串是否是UTF8编码
- vc 如何判断一个字符串是否是UTF8编码
- 字符串编码是否UTF8
- utf8编码-汉字几字节
- php检测字符串编码(utf-8,gbk,gb2312)是否为utf8编码的方法总结
- 判断字符串是否UTF8编码
- Oracle静默安装
- 看清一个质人的本
- 截取字符串
- 在社会上闯荡必须要牢记
- 华为U2000网管研究实录 (3) - 运行分析(服务端进程)
- 检测字节流是否是UTF8编码
- 任务计划如何采集数据?
- Oracle告Google Java开发者坐山观虎斗
- MBA组织行为学——关于不拉马的士兵
- 在ubuntu中安装jdk的遗留问题
- axis不能生成server-config.wsdd文件------解决方法
- Systemd 落选 Fedora 14 的详细原因
- 各个数据的驱动程序汇总
- 河内之塔(C语言递归实现)