判断文本是否是utf-8格式 (用于区分GB2312和UTF-8)
来源:互联网 发布:全面战争哪代优化最好 编辑:程序博客网 时间:2024/05/21 06:56
bool IsTextUTF8(const char* str, long length) { unsigned char chr; int nBytes = 0; // UFT8可用1-6个字节编码,ASCII用一个字节 bool bAllAscii = true; // 如果全部都是ASCII, 说明不是UTF-8 for (int i=0; i < length; i++) { chr = *(str + i); if ((chr&0x80) != 0) // 判断是否ASCII编码,如果不是,说明有可能是UTF-8, ASCII用7位编码,但用一个字节存,最高位标记为0,o0xxxxxxx { bAllAscii = false; } if (nBytes == 0) // 如果不是ASCII码,应该是多字节符,计算字节数 { if (chr >= 0x80) { if (chr>=0xFC && chr<=0xFD) nBytes = 6; else if (chr>=0xF8) nBytes = 5; else if (chr>=0xF0) nBytes = 4; else if (chr>=0xE0) nBytes = 3; else if (chr>=0xC0) nBytes = 2; else return false; nBytes--; } } else // every char of ascii buffer looks like 10xxxxxx, except the first char { if( (chr&0xC0) != 0x80 ) { return false; } nBytes--; } } if (nBytes > 0) // format error { return false; } if (bAllAscii) // if all chars are ascii, the buffer is not utf-8 { return false; } return true; }
0 0
- 判断文本是否是utf-8格式 (用于区分GB2312和UTF-8)
- 判断文本是否是utf-8格式 (用于区分GB2312和UTF-8)
- GBK、GB2312和UTF-8编码区分
- GBK UTF-8 GB2312区分(MYSQL)
- UTF-8和gb2312
- GB2312和UTF-8
- GB2312和UTF-8
- gb2312网页转码输出utf-8格式文本
- 判断文件是否是utf-8
- 判断文件是否是UTF-8编码
- 编码 GB2312 和 UTF-8
- UTF-8和GB2312转换
- utf-8和gb2312 区别
- 对UTF-8和GB2312格式 URL进行解码
- 对UTF-8和GB2312格式 URL进行解码
- UTF-8,GB2312等编码格式详解
- gb2312 utf-8判断及转换
- 如何处理提交页面是GB2312编码格式,接收页面是UTF-8格式?
- 点击td转换成input,失去焦点时发送修改数据
- android开发必备官方链接
- [转]shell 1>&2 2>&1 &>filename重定向的含义和区别
- 验证用户名是否已存在
- go之多线程
- 判断文本是否是utf-8格式 (用于区分GB2312和UTF-8)
- struts2的核心和工作原理
- KMP算法
- formValidator插件检查用户是否已存在
- 框架Quartz
- Fiddler抓取http请求(web/手机/移动端)
- Google Authenticator
- del,md,rd,ren,copy,压缩,解压缩
- 调用jad生成器生成相应的.jad文件