一图看懂 Python 2 / Python 3 编码 | CSDN 博文精选( 三 )

UTF8编码就是bytes类型(字节码) , 长度就是字节数量 。 我们把Unicode字符串’abc天圆地方’转成GBK编码:

s_gbk=s.encode( 'gbk' ) type(s_gbk) class ' bytes ' len(s_gbk) 11 s_gbk b 'abc\\xcc\\xec\\xd4\\xb2\\xb5\\xd8\\xb7\\xbd' print(s_gbk) b 'abc\\xcc\\xec\\xd4\\xb2\\xb5\\xd8\\xb7\\xbd' s_gbk.decode( 's_gbk' ) 'abc天圆地方'

GBK编码也是bytes类型(字节码) , 长度也是字节数量 。 我们再来看看 , 不同编码的字节码能否连接:

ss=s_utf8+s_gbk ss b 'abc\\xe5\\xa4\\xa9\\xe5\\x9c\\x86\\xe5\\x9c\\xb0\\xe6\\x96\\xb9abc\\xcc\\xec\\xd4\\xb2\\xb5\\xd8\\xb7\\xbd' ss.decode( 'utf8' ) Traceback(mostrecentcalllast): File \"pyshell#64\" line 1 in module ss.decode( 'utf8' ) UnicodeDecodeError: 'utf-8' codeccan 'tdecodebyte0xccinposition18:invalidcontinuationbyte ss.decode(' gbk ') ' abc澶╁渾鍦版柟abc天圆地方 ' ss.decode(' utf8 '' ignore ') ' abc天圆地方abc?? ' ss.decode(' gbk '' ignore ') ' abc澶╁渾鍦版柟abc天圆地方 '

看以看出 , 不同编码的字节码可以连接 , 但一般不能解码成Unicode(字符串) , 除非使用ignore参数 。

推荐阅读