utf-8 变长字节的算法
来源:互联网 发布:拜亚动力耳机推荐 知乎 编辑:程序博客网 时间:2024/05/22 00:12
utf8 不比gb2312 ,后者是两个字节表示一个汉字 , 而utf8是变长的。那么在utf8中多少个字节才是表示一个汉字呢?!
在看wesnoth(很不错的回合制游戏)的源码时,特意注意到这一点。找到了分享之:
int byte_size_from_utf8_first(unsigned char ch){ int count; if ((ch & 0x80) == 0) //这是用来兼容ASSIC的。也就是说一个标准的ASSIC文件就是UTF-8文件 count = 1; else if ((ch & 0xE0) == 0xC0) //0xE0是11100000 //0xC0是11000000 //是说前面3个bit 是110 ,那当前的字符和后面的一个字符组成一个汉字 count = 2; else if ((ch & 0xF0) == 0xE0) //0xF0是11110000 //0xE0是11100000 //是说前面4个bit 是1110 ,那当前的字符和后面的两个字符组成一个汉字 count = 3; else if ((ch & 0xF8) == 0xF0) count = 4; else if ((ch & 0xFC) == 0xF8) count = 5; else if ((ch & 0xFE) == 0xFC) count = 6; else throw invalid_utf8_exception(); // Stop on invalid characters return count;}
从注释中不能看出这个IP的分类很相似。。
- utf-8 变长字节的算法
- 1 字节的 UTF-8 序列的字节 1 无效
- 2 字节的 UTF-8 序列的字节 2 无效
- 2 字节的 UTF-8 序列的字节 2 无效
- 3 字节的 UTF-8 序列的字节 3 无效。
- 3 字节的 UTF-8 序列的字节 3 无效
- 1字节的UTF-8序列的字节1无效
- 1字节的UTF-8序列的字节1无效
- 3 字节的 UTF-8 序列的字节 3 无效
- 3 字节的 UTF-8 序列的字节 3 无效
- 1字节的UTF-8序列的字节1无效
- 3 字节的 UTF-8 序列的字节 3 无效
- UTF-8中汉字的字节长度
- 算法导论 8-3思考题 之变长数据项的排序
- 字节,字符,Unicode,utf-32,utf-16,utf-8,ASCII的含义
- org.dom4j.DocumentException: 2 字节的 UTF-8 序列的字节 2 无效。 Nested exception: 2 字节的 UTF-8 序列的字节 2 无效。异常解决办法
- utf-8占几个字节
- utf-8占几个字节
- java高级工程师-------j2se疑惑知识
- 三维空间圆弧拟合-原创
- 淘宝搜索引擎的缓存机制
- 使用Visual Studio 的命令行来创建第一个cpp应用
- 浅谈unique列上插入重复值的MySQL解决方案
- utf-8 变长字节的算法
- 记录一些牛人的博客
- C++中如何在main()函数之前执行操作?
- sql 字符串分割
- iOS 后台运行
- android webview总结
- JSTL 标签库 下载及配置
- C++类模板详解
- Leap Motion:500元体感,精确到0.01毫米