欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

utf-8 下汉字为什么需要三个字节

程序员文章站 2022-03-25 16:16:32
Unicode 十六进制码点范围 --> UTF-8 二进制0000 0000 - 0000 007F --> 0xxxxxxx 0000 0080 - 0000 07FF --> 110xxxxx 10xxxxxx 0000 0800 - 0000 FFFF --> 1110xxxx 10xxxx ......

 

unicode 十六进制码点范围    -->   utf-8 二进制0000 0000 - 0000 007f    -->   0xxxxxxx

0000 0080 - 0000 07ff    -->   110xxxxx 10xxxxxx                            
0000 0800 - 0000 ffff    -->   1110xxxx 10xxxxxx 10xxxxxx                        
0001 0000 - 0010 ffff    -->   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
                  
                                                        
 

一个字节八个二进制位              

unicode 下汉字占用空间为0x4e00到0x9fa5    0010  1110  0000 0000--> 1001 1111 1010 0101
则转化为utf-8为:1110 0010 -10 111000-10 000000 --> 1110 1001-10 111111-10 100101    

       即:0x00e2 b880            --> 0x00e9 bfa5

utf-8只是改变了unicode的保存形式,提高传输译码效率

python 3.7.2系统使用的是utf-8,但编码转换对应的是unicode;例:ord(汉)=27721,chr(27721)=汉,'汉'对应 unicode为0x6c49,即27721,其utf-8表示为0xe6 0xb7 0x89