1.文件编码
py文件默认是ASCII编码,是不支持中文的,即使注释是中文也不行,为了解决这个问题,就需要把文件编码类型改为UTF-8的类型。
可在文件开头加上如下代码:
# -*- coding:utf-8 -*-
2.字符串编码
字符串在python内部的表示是unicode编码。
因此,在做编码转换时,通常需要将unicode作为中间编码。
先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode是字符串具有的方法,将字符串转换成unicode格式,参数为源字符串的编码格式。
encode也是字符串具有的方法,将字符串转换成参数指定的编码格式。
#字符串编码为unicode编码
s = u'中文'
#字符串编码与代码本身编码一致,如果文件编码为UTF-8则该字符串编码为UTF-8,如果文件编码为GB2312则字符串编码为GB2312。
s = '中文'
3.系统编码
通常python默认的系统编码是ascii,可通过sys.getdefaultencoding()查看。
当进行解码时,如果没有指名编码格式,那么就会按照sys.getdefaultencoding()或得的编码格式进行解码。
系统会先将字符串从sys.getdefaultencoding()解码成unicode,然后再编码成utf-8。
s.encode('utf-8')
解决方案:
1》解码时指名编码格式
s = '中文'
s.decode('gbk').encode('utf-8')
2》更改defaultencoding为文件的编码方式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
#python2.5初始化后会删除sys.setdefaultencoding这个方法,因此需要重新载入。
reload(sys)
sys.setdefaultencoding('utf-8')
s.encode('utf-8')
py文件默认是ASCII编码,是不支持中文的,即使注释是中文也不行,为了解决这个问题,就需要把文件编码类型改为UTF-8的类型。
可在文件开头加上如下代码:
# -*- coding:utf-8 -*-
2.字符串编码
字符串在python内部的表示是unicode编码。
因此,在做编码转换时,通常需要将unicode作为中间编码。
先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode是字符串具有的方法,将字符串转换成unicode格式,参数为源字符串的编码格式。
encode也是字符串具有的方法,将字符串转换成参数指定的编码格式。
#字符串编码为unicode编码
s = u'中文'
#字符串编码与代码本身编码一致,如果文件编码为UTF-8则该字符串编码为UTF-8,如果文件编码为GB2312则字符串编码为GB2312。
s = '中文'
3.系统编码
通常python默认的系统编码是ascii,可通过sys.getdefaultencoding()查看。
当进行解码时,如果没有指名编码格式,那么就会按照sys.getdefaultencoding()或得的编码格式进行解码。
系统会先将字符串从sys.getdefaultencoding()解码成unicode,然后再编码成utf-8。
s.encode('utf-8')
解决方案:
1》解码时指名编码格式
s = '中文'
s.decode('gbk').encode('utf-8')
2》更改defaultencoding为文件的编码方式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
#python2.5初始化后会删除sys.setdefaultencoding这个方法,因此需要重新载入。
reload(sys)
sys.setdefaultencoding('utf-8')
s.encode('utf-8')