关于字符编码(2)

这个教程 学习python中,在字符编码这一章边看边想,做点记录。

(python 3)

 

引用:...

在最新的Python 3版本中,字符串是以Unicode编码的

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('')
20013

如果知道字符的整数编码,还可以用十六进制这么写str

>>> '\u4e2d\u6587'
'中文'

(由于Python的字符串类型是str,在内存中以Unicode表示)

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

(在bytes中,无法显示为ASCII字符的字节,用\x##显示。)

...

 

 

注意到,

字符ASCIIUnicodeUTF-8
'中'    无

(01001110 00101101)b <=> 0x4e2d

 

(注:0xe4b8 <=> 1110 0100 1011 1000 )

11100100 10111000 10101101

 

想错了。。本来一看这个排序好像有点反过来的意思,然而并不是,'\xe4\xb8\xad\xe6\x96\x87' 是已经转换成UTF-8了。。已经划掉,无视就好。。

 

 

好那就进入UTF-8环节:

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,'中' 就变成了0xe4b8ad(见上表)

这里 可以看到UTF-8的编码规则,其中三字节的规则是

3字节 1110xxxx 10xxxxxx 10xxxxxx

直接来检验一下:

把 xxx换成'中'的Unicode [ 0100 111000 101101 ], 并分段填入

得到 11100100 10111000 10101101

与'中'的UTF-8码(见上表)相同。

 

OK回去继续学习

 

转载于:https://www.cnblogs.com/Cmfvacks-IsLjj/p/4728563.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值