python3编码(encode,decode)
python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示。
字符串通过编码转换成字节码,字节码通过解码成为字符串
encode:str --> bytes
decode:bytes --> str
实例python 3.0+
str = "我是Python3" str_utf8 = str.encode('utf-8') str_gbk = str.encode('GBK') print(str) print("UTF-8 编码:", str_utf8) print("GBK 编码:",str_gbk) print("UTF-8 解码:", str_utf8.decode('utf-8')) print("GBK解码:",str_gbk.decode('GBK'))
输出结果如下:
我是Python3 UTF-8 编码: b'\xe6\x88\x91\xe6\x98\xafPython3' GBK 编码: b'\xce\xd2\xca\xc7Python3' UTF-8 解码: 我是Python3 GBK解码: 我是Python3
分析:
- python3默认的编码为unicode,utf-8可以看做是unicode的一个扩展集
- encode:指明要使用的编码,decode:指明当前编码的编码格式
#-*-coding:gb2312 -*- #这个也可以去掉 import sys print(sys.getdefaultencoding()) msg = "我爱北京天安门" #msg_gb2312 = msg.decode("utf-8").encode("gb2312") msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔 gb2312_to_unicode = msg_gb2312.decode("gb2312") gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8") print(msg) print(msg_gb2312) print(gb2312_to_unicode) print(gb2312_to_utf8)
输出结果:
utf-8 我爱北京天安门 b'\xce\xd2\xb0\xae\xb1\xb1\xbe\xa9\xcc\xec\xb0\xb2\xc3\xc5' 我爱北京天安门 b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'