utf ucs16
来源:互联网 发布:伺服控制系统编程 编辑:程序博客网 时间:2024/06/05 23:01
UTF-8的特点是对不同范围的字符使用不同长度的编码。对于 0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。从表3-2可以看出,4字节模板有21个 x,即可以容纳21位二进制数字。Unicode的最大码位0x10FFFF也只有21位。
如:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
又如:Unicode编码0x20C30在0x010000-0x10FFFF之间,使用4字节模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二进制数字(不足21位就在前面补0):0 0010 0000 1100 0011 0000,用这个比特流依次代替模板中的x,得到:11110000 10100000 10110000 10110000,即F0 A0 B0 B0。
将UTF-8转换为 UNICODE的过程,实际上是将按UTF-8编码规则填充至UNICODE的编码提取出来的过程,即将8位的字节“xxxx xxxx”提取出来的过程,如某字符以“1110xxxx 10xxxxxx 10xxxxxx”的编码方式进行UTF-8编码,还原后UNICODE编码为:“xxxx xxxx”。
例如字符“中”,二进制序列(双字节)为:0100 1110 0010 1101,进行UTF-8编码后的字节二进制序列(三字节)为:1110 0100 10 111000 10 101101,进行UTF-8转码即去掉第一个字节的“1110”,第二个字节的“10”,第三个字节的“10”,然后再将剩余的二进制序列组合成一个双字节的二进制序列,即还原为:0100 1110 0010 1101,如此则完成转码。
如:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
又如:Unicode编码0x20C30在0x010000-0x10FFFF之间,使用4字节模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二进制数字(不足21位就在前面补0):0 0010 0000 1100 0011 0000,用这个比特流依次代替模板中的x,得到:11110000 10100000 10110000 10110000,即F0 A0 B0 B0。
| Unicode符号范围 | UTF-8编码方式 n | (十六进制) | (二进制)---+-----------------------+------------------------------------------------------ 1 | 0000 0000 - 0000 007F | 0xxxxxxx 2 | 0000 0080 - 0000 07FF | 110xxxxx 10xxxxxx 3 | 0000 0800 - 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 4 | 0001 0000 - 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5 | 0020 0000 - 03FF FFFF | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6 | 0400 0000 - 7FFF FFFF | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 表 1. UTF-8的编码规则
将UTF-8转换为 UNICODE的过程,实际上是将按UTF-8编码规则填充至UNICODE的编码提取出来的过程,即将8位的字节“xxxx xxxx”提取出来的过程,如某字符以“1110xxxx 10xxxxxx 10xxxxxx”的编码方式进行UTF-8编码,还原后UNICODE编码为:“xxxx xxxx”。
例如字符“中”,二进制序列(双字节)为:0100 1110 0010 1101,进行UTF-8编码后的字节二进制序列(三字节)为:1110 0100 10 111000 10 101101,进行UTF-8转码即去掉第一个字节的“1110”,第二个字节的“10”,第三个字节的“10”,然后再将剩余的二进制序列组合成一个双字节的二进制序列,即还原为:0100 1110 0010 1101,如此则完成转码。
另外,用程序从本地机器上读取得的文件系统中的文件(夹)名遵从操作系统默认编码.大陆一般为gb2312.
0 0
- utf ucs16
- Unicode,utf-8,utf-16,utf-32,ucs16,ucs32关系
- utf
- UTF-16, UTF-8
- UTF-16 UTF-8
- UTF-8、UTF-16、UTF-32
- Unicode,UTF-8,UTF-16,UTF-32
- unicode,utf-8,utf-16,utf-32
- UTF-8
- UTF-8
- UTF-8
- utf-8
- UTF-8
- UTF-8
- UTF-8
- UTF-16
- UTF-8
- UTF-8
- 屏蔽 TextBox自带右键菜单
- 最长回文子序列
- SEO新手别低估百度的智商
- [SPFA预处理+DP]1003: [ZJOI2006]物流运输trans
- 把数组排成最小的数
- utf ucs16
- PHP简单工厂模式
- zoj3203 Light Bulb(三分)
- 字符串处理--表达式
- Android ExpandableListView 可展开的ListView
- 求解最小生成树的算法 prim算法(附模板)
- MD5加密C实现
- activity的使用(十二):启动录音
- Poj 2367 Genealogical tree(拓扑排序)