Unicode默认中英文为2个字节,16位 Unicode相当于编码的转码中介 ASCII不可存中文字符 utf-8(可变长):英文字符按照ASCII码 中文字符三个字节 #打印系统默认编码 import sys print(sys.getdefaultencoding()) ------------------------------------------- python2中: #若UTF-8转为GBK 默认编码为unicode 则需要进行解码操作,先解成UNICODE(可显示中文),再编码为GBK s="你好" s_to_unicode=s.decode("utf-8") s_to_GBK =s_to_unicode.encode("GBK") ---------- 也可以这种写法 s=u"你好" s_to_GBK=s.encode("gbk") #unicode 和 uft-8之间都可以打印显示 -------------------------------------------- python3中:默认是utf-8,声明为utf-8 s="你好" s_to_gbk=(s.encode("gbk")) #utf-8转为gbk,注意,必须要用变量存储新转化,否则原s不变 s2=s.encode() #默认编码utf-8 print(s_to_gbk) print(s2) s_to_utf8=s_to_gbk.decode("gbk").encode("utf-8") #gbk转为utf-8:先解码为unicode,再编码为utf-8 print(s_to_utf8) #总之:转码进行需要先进行decode成unicode再encode成所要的编码格式 注意!文件编码为utf-8,则需要声明为utf-8格式,其他编码做法类似 文件编码与程序运行所用的编码不同,程序运行所用的编码是默认的unicode,如上面的s仍然为unicode 所以开始就只有encode,因为程序已经是unicode了,不需要再解码成unicode 解码需要写上需要解码的原编码格式 #总之,可以把程序的编译认为是unicode编码