python3字符集之间--encode与decode之间的转码详解

encode是编码,里面传入的参数是需要转成的字符集,
decode是解码,里面传入的参数是本身的字符集,用本身的字符集解码为unicode字符集再转码

字符集之间的爱恨纠缠

 1 # -*- coding: utf-8 -*-
 2 '''
 3     Python3 默认编码为unicode
 4 '''
 5 #输出默认编码
 6 import sys
 7 print(sys.getdefaultencoding())
 8 
 9 #文件编码为utf-8
10 s = '你好'
11 #把s转换为gbk编码
12 s_to_gbk = s.encode("gbk")
13 print(s_to_gbk)
14 #输出结果为bytes类型--b'xc4xe3xbaxc3'
15 
16 #再把此时的gbk转换成utf-8
17 s_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
18 print(s_to_utf8)
19 #输出结果为bytes类型--b'xe4xbdxa0xe5xa5xbd'
20 
21 #再把此时的utf-8转换成gb2312
22 s_to_gb2312 = s_to_utf8.decode("utf-8").encode("gb2312")
23 print(s_to_gb2312)
24 #输出结果为byts类型--b'xc4xe3xbaxc3',因为gb2312字符集归属于gbk字符集,所以转换结果bytes相同
25 
26 #把gbk转换为gb2312
27 s_to_gbk_gb2312 = s_to_gbk.decode("gbk").encode("gb2312")
28 print(s_to_gbk_gb2312)
29 #输出结果为byts类型--b'xc4xe3xbaxc3'
30 
31 
32 '''
33     encode是编码,里面传入的参数是需要转成的字符集,
34     decode是解码,里面传入的参数是本身的字符集,用本身的字符集解码为unicode字符集再转码
35     总结:python3基于unicode编码,若文件头声明为utf-8只是以utf-8字符集显示,基本的还是unicode
36          当使用unicode转换为utf-8时直接encode("utf-8")就可以了,
37          同理若使用unicode转换为gbk时直接encode("gbk")就可以了,
38          若使用utf-8转换成gbk则需要先解码decode("utf-8").encode("gbk")再编码为gbk
39          若使用utf-8转换成gb2312则需要先解码decode("utf-8").encode("gb2312")再编码为gb2312
40          若使用gbk转换成utf-8则需要先解码decode("gbk").encode("utf-8")再编码为utf-8
41          若使用gbk转换成gb2312则需要先解码decode("gbk").encode("gb2312")再编码为gb2312
42          gb2312同理...
43 '''
原文地址:https://www.cnblogs.com/weijiazheng/p/10548567.html