day03-字符编码与转换

1、编码常识

  • 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode
  • unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间
  • 在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型
  • 在unicode编码中 1个中文字符=2个字节,1个英文字符 = 1个字节,切记:ASCII是不能存中文字符的
  • utf-8是可变长字符编码,它是unicode的优化,所有的英文字符依然按ASCII形式存储,所有的中文字符统一是3个字节
  • unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程
  • python本身的默认编码是utf-8

 

在Python2.X中,默认编码是ASCII

#-*- encoding:utf-8 -*-

import sys

print(sys.getdefaultencoding())  #打印当前默认编码

s = '你好!!!'          

s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码)

print(s_to_unicode)     #此时可以打印中文

 

2、Python2.x  utf-8转换成gbk格式

1 #-*- encoding:utf-8 -*-
2 s = '你好!!!'           
3 s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码)
4 s_to_gbk = s_to_unicode.encode('gbk')
5 合成一句
6 #s_to_gbk = s.decode('utf-8').encode('gbk')
7 print(s_to_gbk)  

3、Python2.x  gbk转换成utf-8格式

1 #-*- encoding:utf-8 -*-  #属于文件编码
2 s = '你好!!!'          #默认编码也是utf-8
3 s_to_gbk = s.decode('utf-8').encode('gbk')
4 gbk_to_utf-8 = s_to_gbk.decode(‘gbk’).encode(‘utf-8’)
5 print(gbk_to_utf-8)

4、Python3.x  unicode转换成gbk,gbk再转换成utf-8,utf-8转换成unicode

 1 s = '你好'     #python3 默认是unicode
 2 
 3 s_gbk = s.encode("gbk") #将unicode转换成gbk
 4 
 5 print(s_gbk)   
 6 print(s.encode())#默认解码成utf-8
 7 
 8 gbk_to_utf8 = s_gbk.decode('gbk').encode('utf-8')
 9 print(gbk_to_utf8)
10 
11 utf8_to_unicode=gbk_to_utf8.decode('utf-8')
12 print(utf8_to_unicode)
13 
14 输出结果:
15 utf-8
16 b'\xc4\xe3\xba\xc3'            #encode会将结果变成二进制编码
17 b'\xe4\xbd\xa0\xe5\xa5\xbd'
18
b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好                          #decode会将结果变成字符

 

posted @ 2017-03-19 16:18  涅槃之路  阅读(160)  评论(0编辑  收藏  举报