检测字节流是否是UTF8编码
来源:互联网 发布:淘宝集市店怎么申请 编辑:程序博客网 时间:2024/06/15 13:21
原文:点击打开链接
几天前偶尔看到有人发帖子问“如何自动识别判断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
阅读全文
0 0
- 检测字节流是否是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中多表连接查询
- 怎么看单片机编译的程序大小?
- 仿csdn下载模块的功能,权限的代码解析
- ionic 打包签名
- Qiniu-Plupload在微信中直接调用摄像头
- 检测字节流是否是UTF8编码
- 个人简介About me
- float与double的范围和精度
- 打印星星,Scanner输入列行数据
- OpenCV学习笔记16-轮廓
- Java学习第二十四天
- java入门首先了解的问题(一)
- 安装openssl 扩展的时候出现Cannot find config.m4. Make sure that you run '/usr/local/php/bin/phpize' in the to
- STM32printf函数实现方法