python3 encode,decode

python3中使用unicode;即字符串都是unicode编码

转成其他编码都要使用encode('gbk'),从utf-8转为gbk如下图:

        encode('gbk')  
unicode----------------->str bytes类型
encode('utf-8')

utf-8:
1K=1024bytes [a-z0-9]=1byte 好=3bytes
gb2312:
1k=1024bytes [a-z0-9]=1byte 好=2bytes

文本总是Unicode,由str类型进行表示,二进制数据使用bytes进行表示,不会将strbytes偷偷的混在一起,使得两者的区别更加明显。在python2中会明显发现不能将strbytes拼接在一起,也不能在bytes中查找字符。

python2:默认Asicci编码,不显示中文,所以一般在文件头定义编码#-*- coding:utf-8 -*-,转化为gbk如下图:


2.encode('gbk')
<----------------
str----------------->unicode
1.decode('utf-8')

 

字符串通过编码成为字节码,字节码通过解码成为字符串。

>>> text = '我是文本'
>>> text
'我是文本'
>>> print(text)
我是文本
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文本'
>>> print(textDecode)
我是文本

编码就是将字符串转换成字节码,涉及到字符串的内部表示。
解码就是将字节码转换为字符串,将比特位显示成字符。

其中decode()encode()方法可以接受参数,其声明分别为:

bytes.decode(encoding="utf-8", errors="strict")
str.encode(encoding="utf-8", errors="strict")

posted @ 2017-05-03 17:23  wangxingg  阅读(186)  评论(0)    收藏  举报