UTF-8编码规则
来源:互联网 发布:mac 编译安装php7.1 编辑:程序博客网 时间:2024/06/04 01:24
UTF-8是Unicode编码规范的一种实现。依据网上的资料来阅读其编码规则,感觉甚难读懂,只能慢慢体会。下面仅介绍一点自己的领悟。
UTF-8中每个字符所占的字节数是不定的,从1到4个字节都可能。
解析字节时所用的规则:
0xxxxxxx,如果是这样的01串,也就是以0开头后面是啥就不用管了XX代表任意bit.就表示把一个字节做为一个单元.就跟ASCII完全一样.
110xxxxx 10xxxxxx.如果是这样的格式,则把两个字节当一个单元
1110xxxx 10xxxxxx 10xxxxxx 如果是这种格式则是三个字节当一个单元.
百度百科上说:
Unicode转换为UTF-8需要的字节数可以根据这个规则计算:如果Unicode小于0X80(Ascii字符),则转换后为1个字节。否则转换后的字节数为Unicode二进制位数减1再除以5。
首先,考虑一下ASCII码中的字符,也就是0--127之间的字符,很显然,一个字节就够了,而且最高位一定是0,这时用UTF-8表示,就是用一个字节,跟ASCII码的二进制表示一模一样。所以UTF-8是兼容ASCII码的。那从128往后的字符呢?先看个比较小的字符,就拿128举例,二进制形式是1000 0000,一个字节也是够的,完全没有问题,但是,再大些呢,比如281,一个字节不够了,需要两个字节,即0000 0001,0001 1001,那么UTF-8可以用两个字节直接这样表示吗?显然不可以,因为当读到第一个字节时,怎么能知道这是一个ASCII码中的1呢还是281的高位字节呢?再比如,更大些的数字1001 0001,1100 0011,到底第一个字节是一个ASCII字符呢还是一个比较大的字符的高位字节呢?也就是高位是1的话就会引起歧义,那么当字符大于127时就必须用两个字节来表示了,原本放在最高位的1就该挪到高位字节里去了,而高位置1就用来表示“我是大数字的高位字节”,几个1连续,就表示连续几个字节代表一个符号,例如11100000,10010110,1001 0011就表示这三个字节一起合起来代表一个字符。
阅读全文
0 0
- UTF-8编码规则
- UTF-8编码规则
- utf-8编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8 编码规则
- UTF-8编码规则
- UTF 8 编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8编码规则 .
- UTF - 8编码规则
- UTF-8编码规则
- UTF-8编码规则
- UTF-8 编码规则
- 194
- ajax 数据交互 接口调用
- 从概念到实例详细讲解squid配置
- 195
- B
- UTF-8编码规则
- 线段树模板
- Spring4+Hibernate4整合配置
- 196
- 197
- 198
- 199
- Java
- Unreal Engin_Maya插件ArtV1_001<初认Artv1创建一个带绑定的人物&&对其进行简单的设置>