Day14 字符编码

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

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

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

 

python 2.x中

 

#-*-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.x中

#-*-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)

 

#-*-coding:gbk-*-
#文件以GBK编码
import sys

print(sys.getdefaultencoding())

s='你好'#还是默认utf-8
print(s)
print(s.encode('gbk'))
print(s.encode('utf-8').decode('utf-8').encode('gb2312'))
print(s.encode('utf-8').decode('utf-8').encode('gb2312').decode('gb2312'))
>>>
utf-8
你好
b'\xc4\xe3\xba\xc3'
b'\xc4\xe3\xba\xc3'
你好

 

posted @ 2018-04-21 16:23  q1ang  阅读(103)  评论(0编辑  收藏  举报