Python中的编码问题

python文件的编码 v2.7

首先,
encode('codec') => 把unicode转化成其他codec的str;
decode('codec') => 把其他codec的str转换成unicode

python默认charset:'ascii'.

import sys
print sys.getdefaultencoding() 

如果字符集是'ascii'码,那文件中不能处理中文。在开头引入# coding=utf-8 或者 # - coding:utf-8 -,表明支持utf-8字符集。

打印unicode报错 --> 检查是否当前编码是utf-8,然后encode('utf-8')。比如从网上爬下来的中文数据,首先要decode('GBK')。为了显示出来还要encode('utf-8')

utf-8和utf-16
utf-8是变长编码,0000-007F一个字节,0080-07FF->两个字节,其他->三个字节
utf-16是固定两个字节编码方式

python中str.encode("targetcodec")其实做了隐式的str.decode("defaultcodec").encode("targetcodec"),而在print一个unicode的时候则会隐式做encode('defaultcodec)操作,这也是经常会出错的一个原因。解决办法是修改defaultcodec:

  s=u'中文'
  reload(sys)
  sys.setdefaultencoding('utf-8')
  print s

你可能感兴趣的:(Python中的编码问题)