字符编码与解码

# ascii码:英文字母、数字、特殊字符
# 扩展ascii码:ascii码的扩展,增加了拉丁文
# GB2312:对ascii的中文扩展。简体中文的字符集编码。包含7000多汉字
# GB18030和GBK:GBK是对GB2312的扩展,包括了GB2312所有内容,增加近2万汉字和符号
# unicode编码:万国编码,国际组织制定的可以容纳世界上所有文字和符号的字符编码方案
# UTF-8:Unicode的扩展,可变长度字符,英文用一个字节,汉字用两个字节,比unicode节省空间。推荐的编码

# 获取系统默认编码
import sys
print("默认字符集:",sys.getdefaultencoding())

#由于已经是utf8,所以不用解码就可转换成其它编码类型。unicode与utf8之间不用转换
#各个编码的互相转换都要先转换成unicode(utf-8),然后转换成想要的编码
#编码只转换汉字和中文标点,字母数字英文标点不转换
#编码是将明文或utf8转成其它类型
#解码是将非utf8转成utf8

str = '学习python3.5'

#对变量str编码成GBK
str_gbk = str.encode('gbk')
print('GBK:',str_gbk)

#对GBK类型——》解码成明文——》编码成GB2312
#所有的decode都会解码成unicode类型
str_gb2312 = str_gbk.decode('gbk').encode('gb2312')
print('GB2312:',str_gb2312)

#对GB2312类型——》解码成明文——》编码成UTF8
str_utf8 = str_gb2312.decode('gb2312').encode('utf8')
print('UTF-8:',str_utf8)

#\x表示后面是十六进制, \xe4\xb8\xad即是二进制的 11100100 10111000 10101101
str_gb2312 = str_utf8.decode('utf8').encode('gb2312')
print("又转回gb2312",str_gb2312)

str_utf8 = str_gb2312.decode('gb2312').encode('utf8')
print("现在是utf8:",str_utf8)

#在linux中编写python脚本时,为支持中文,应在首行添加:
# #!/usr/bin/env python
# #-*- coding:gbk -*- 将文件编码声明成gbk(但变量默认还是utf8)
# #! -*- coding:utf-8 -*- 将文件编码声明成utf8


#或者:
# #!/usr/bin/env python
# # coding=utf-8

posted @ 2017-10-25 10:32  浆糊jun  阅读(438)  评论(0编辑  收藏  举报