黑猴子的家:python encode编码

需知

(1) 在python2默认编码是ASCII, python3里默认是unicode

(2) unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

(3) 在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

黑猴子的家:python encode编码
上图仅适用于py2

python2 code

# -*- coding: utf-8 -*-
#黑猴子的家

import sys

#打印系统默认编码
print(sys.getdefaultencoding())

s = "你好"
#s_to_gbk1 = s.encode("gbk")
s_to_gbk2 = s.decode("utf-8").encode("gbk")
#$print(s_to_gbk1)
print(s_to_gbk2)
print("你好")

m = u"你好吗"
print(m)
#-*-coding:utf-8-*-
__author__ = 'Alex Li'

import sys
print(sys.getdefaultencoding())


msg = "我爱北京天安门"
msg_gb2312 = msg.decode("utf-8").encode("gb2312")
gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk")

print(msg)
print(msg_gb2312)
print(gb2312_to_gbk)

python3 code

# -*- coding:gbk -*-
#黑猴子的家

#这个 s 现在是 unicode,python默认编码
s = "你好"
s_gbk = s.encode("gbk")
print(s_gbk)
print(s.encode("utf-8"))
gbk_to_utf8 = s_gbk.decode("gbk").encode("utf-8")
print(gbk_to_utf8)

print("------------------------------------------------")
print(s.encode("gbk"))
print(s.encode("utf-8"))
print(s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312"))
#-*-coding:gb2312 -*-   #这个也可以去掉
__author__ = 'Alex Li'

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)

in python3