一图看懂 Python 2 / Python 3 编码 | CSDN 博文精选( 二 )
我们之所以会产生困惑 , 是因为PY2和PY3给这些编码格式指定了令人困惑的名字 。 PY2的字符串有两种类型: Unicode类型和str类型 。 PY2的Unicode类型就是Unicode编码 , PY2的str类型泛指除Unicode编码之外的所有编码 , 包括ASCII编码、UTF8编码、GBK编码、cp936编码等 。 PY 3的字符串也有两种类型: bytes类型和str类型 。 PY3的str类型就是Unicode编码 , PY3的bytes类型泛指除unicode编码之外的所有编码 , 包括ASCII编码、UTF8编码、GBK编码、CP936编码等 。 同样是str类型 , 在PY2和PY3中完全颠倒了! 下图稍微补充了一点内容 , 更有助于理解编码问题 。
接下来 , 我们实战演练一下 。
s= 'abc天圆地方' type(s) class ' str ' len(s) 7 s 'abc天圆地方' print(s) abc天圆地方 s.encode( 'unicode-escape' ) b 'abc\\\\u5929\\\\u5706\\\\u5730\\\\u65b9' 不管是否在字符串前面加了u , 只要不在字符串前面使用b , 在IDLE中定义的字符串都是Unicode编码 , 也就是PY3的class ‘str’ , 其长度就是字符数量 , 不是字节数 。 我们把Unicode字符串’abc天圆地方’转成UTF8编码: s_utf8=s.encode( 'utf8' ) type(s_utf8) class ' bytes ' len(s_utf8) 15 s_utf8 b 'abc\\xe5\\xa4\\xa9\\xe5\\x9c\\x86\\xe5\\x9c\\xb0\\xe6\\x96\\xb9' print(s_utf8) b 'abc\\xe5\\xa4\\xa9\\xe5\\x9c\\x86\\xe5\\x9c\\xb0\\xe6\\x96\\xb9' s_utf8.decode( 'utf8' ) 'abc天圆地方'推荐阅读
- |“只有将图片的亮度调亮,才能看懂的梗!”
- 法术|双城之战:羁绊、海克斯强化、装备一文看懂
- 和平精英|“吃鸡”为挽留玩家,白送1个新车皮?总算看懂光子的良苦用心!?
- 使命召唤19|边路混不下去,转打野就能迎来第二春?战士边路潜规则看懂没?
- 手机游戏|DNF最扎心的五张图,十年前能看懂就不会入坑了,最后一图太真实
- 圣战群英传|RNG击败EDG,小虎对线单杀圣枪哥,给Scout选混子没看懂
- 魔女斗篷|王者荣耀:永夜守护想撼动魔女斗篷的C位?数据让你看懂两者的差距
- pc端卡牌类|原神 鹤观岛的剧情你看懂了吗?玩家:墨田很讨厌、阿瑠很可怜!
- 孙悟空|安琪拉新皮肤销量超越孙悟空,多数玩家被骗,就是因为没看懂规则
- 齐舞|王一博战队组队思路,初看是青铜,一战是王者,看懂的都是高手!