UTF-8的编码规则
UTF-8的编码规则:
1、对于单字节的字符,字节的第⼀位设为0,后⾯七位为这个字符的Unicode码。
因此对于英⽂字符,UTF-8编码和ASCII码是相同的。
2、对于n字节的字符(n>1),第⼀个字节的前n位都设为1,第n+1位设为0,后⾯字节的前两位⼀律设为10。剩下的没有提及的⼆进制位,全部为这个字符的Unicode编码。
UTF-8每次传送8位数据,并且是⼀种可变长的编码格式
具体来说,是怎么的可变长呢.
分为四个区间:
0x0000 0000 ⾄ 0x0000 007F:0xxxxxxx
0x0000 0080 ⾄ 0x0000 07FF:110xxxxx 10xxxxxx
0x0000 0800 ⾄ 0x0000 FFFF:1110xxxx 10xxxxxx 10xxxxxx
0x0001 0000 ⾄ 0x0010 FFFF:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-8解码过程:
对于采⽤UTF-8编码的任意字符B
如果B的第⼀位为0,则B为ASCII码,并且B独⽴的表⽰⼀个字符;
如果B的前两位为1,第三位为0,则B为⼀个⾮ASCII字符,该字符由多个字节表⽰,
并且该字符由两个字节表⽰;
如果B的前三位为1,第四位为0,则B为⼀个⾮ASCII字符,该字符由多个字节表⽰,
并且该字符由三个字节表⽰;
⽐如汉字 “王”,它的⼆进制形式为: 0x0000 738B,属于第三区间,
0x0000 738B - 00000000 00000000 01110011 10001011,
第三区间的编码是 1110xxxx 10xxxxxx 10xxxxxx
把x都给替换,则最终"王"字对应的Unicode的编码是
11100111 10001110 10001011
转换成16进制 0xe7 0x8e 0x8b
如果B的前四位为1,第五位为0,则B为⼀个⾮ASCII字符,该字符由多个字节表⽰,
并且该字符由四个字节表⽰;
unicode编码转换二进制

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。