python之字符编码与转码

1.在python2默认编码是ASCII(占一个字节), python3里默认是unicode

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

   utf-8可变长度存英文字母一个字节,中文3个字节,因为utf8省空间

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

4.gbk:gb2312,7xxx个,占2个字节;gbk,27000个字符,占2个字节

 仅适用于py2

python2

 1 import sys
 2 print(sys.getdefaultencoding())
 3 
 4 
 5 msg = "我爱北京天安门"
 6 msg_gb2312 = msg.decode("utf-8").encode("gb2312")
 7 gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk")
 8 
 9 print(msg)
10 print(msg_gb2312)
11 print(gb2312_to_gbk)

python3

 1 import sys
 2 print(sys.getdefaultencoding())
 3 
 4 
 5 msg = "我爱北京天安门"
 6 #msg_gb2312 = msg.decode("utf-8").encode("gb2312")
 7 msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode
 8 gb2312_to_unicode = msg_gb2312.decode("gb2312")
 9 gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")
10 
11 print(msg)
12 print(msg_gb2312)
13 print(gb2312_to_unicode)
14 print(gb2312_to_utf8)

猜你喜欢

转载自www.cnblogs.com/dangjf/p/9015994.html