字符串在Python内部的表示是unicode编码,因此,在做编码转换时,需要先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码.
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gbk')或unicode(str1,'gbk'),表示将gbk编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gbk'),表示将unicode编码的字符串str2转换成gbk编码。
如何判断文件中的编码格式呢?
大家不要忽略了我们python脚本头得一句类似注释的代码 #-*- coding: gbk -*- ,正是它指定了我们这个脚本的编码格式。
如果一个字符串已经是unicode了,再进行解码(decode)则将出错,同理,用非unicode编码形式的str来encode会报错
因此通常要对其编码方式是否为unicode进行判断:isinstance(s, unicode) # s为要判断的字符串
下面教大家几个小技巧:
1,获得系统的默认编码:
import sys
sys.getdefaultencoding() #如果是刚装完的python会输出ascii,这是默认的编码格式。
当然这个并不是不能修改的,下面就交给大家一个修改的方法:
建一个sitecustomize.py的文件,内容如下:
# encoding=GBK
import sys
reload(sys)
sys.setdefaultencoding('gbk')
然后放到python安装目录的Lib/site-packages下,此时你再打开python编译器,用getdefaultencoding()查看,会发现输出为gbk~
如果你想用utf-8呢? 呵呵,这里我就不赘述了,你懂得~
附上一个简单示例:
#coding=gbk
s="中文"
if isinstance(s, unicode):
else:
1982

被折叠的 条评论
为什么被折叠?



