Python 编解码【初探】

编码是为了兼容字符集之间的通用性,通常可以编码的地方有:
1、系统默认编码
2、程序运行环境的编码
3、源码文件自身的编码
4、程序中的字符串编码

对于Python也是一样的:

通常中文操作系统的编码都是gbk

python运行环境默认的编码是ascII

源文件的编码可以自己确定【# -*- coding: gbk -*-】,不设置就是默认的python编码

程序内容的编码可以通过python提供的几个函数来进行转换。【如unicode】

通常python编解码的过程是这样的:

接受到一个字符--如果预先没有编码则使用unicode编码--》如果和系统的字符集不一致-->则隐性转换为系统默认的字符集--》使用系统的编码方式解码字符串

python中程序内部编解码的方式:

  1. >>s='中文'  
  2. >>type(s) #查看s的字符类型   
  3. >>s #查看字符原码   
  4. >>print s  #调用系统字符集解码   
  5.   
  6. >>unicode(s,'gbk')  #解码为unicode   
  7. >>type(s)  
  8. >>s  
  9. >>print s  
  10.   
  11. >>s.encode('utf-8'##编码为utf8   
  12. >>type(s)  
  13. >>s  
  14. >>print s  
  15.   
  16. >>s.decode('utf-8'##解码utf8,默认的编码方式是unicode   
  17. >>type(s)  
  18. >>s  
  19. >>print s  

指定的编码字符只能用指定的编码方式解码,否则会报错。所有字符集中python的中间字符集是unicode。即如果gbk想转换为utf-8的路径不是直接转换,而是gbk->unicode->utf-8.不能直接gbk->utf-8

另外对于一些包含特殊字符的编码,直接解码可能会报错,可以使用对于的参数来设置。如
s.decode('utf-8',ignore)忽略其中有异常的编码,仅显示有效的编码
s.decode('utf-8',replace)替换其中异常的编码为?,这个相对来可能一眼就知道那些字符编码出问题了。

相关推荐