python学习DAY7(编码转码)

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编码

原文地址:https://www.cnblogs.com/god-for-speed/p/11108009.html