Python2中的编码问题

编码的起源

1、计算机的存储方式为二进制字节
2、所以需要一种映射的方式将二进制字节映射成世界上的各种符号(字符)
3、最早ASCII码将字符对应到二进制字节上。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。比如一个一个ASCII码65(十六进制41),我们知道它对应的是字符A
4、但是日韩中文字符很多,ASCII码仅仅能够表示有限的字符,不够用,于是出现了unicode码,Unicode是一个以’U+’字符开头,后面跟着4位或者5位或者6位十六进制数字,下图是6中字符的Unicode码
在这里插入图片描述

二进制字节 ------------》unicode码--------------》字符

其中:
二进制字节上 ------------》unicode码:映射方式有UTF-16、UTF-32,UTF-8。

字符编码之ASCII、UTF-8、UTF-16的区别

https://www.zhihu.com/question/23374078

Unicode 是「字符集」
UTF-8 是「编码规则」

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

python的encode和decode

之前说过Unicode将所有的字符都对应上了相应的码点(即unicode码),而UTF-8或者ASCII码不过是对应从Unicode到字节的映射方式,既然有映射方式,那么就有映射方向。我们把从Unicode到字节码(byte string)称之为encode,把从字节码(byte string)到Unicode码称之为decode

>>> s='中国'
>>> len(s)
6
>>> s.decode('utf-8')
u'\u4e2d\u56fd'
>>> s_decode=s.decode('utf-8')
>>> len(s_decode)
2
>>> s_decode.encode('utf-8')
'\xe4\xb8\xad\xe5\x9b\xbd'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值