Python初学者编码实践中经常遇到encodeerror,decodeerror,如下:
例1:
UnicodeEncodeError:'ascii'codeccan'tencodecharacteru'/u5728'inposition1
例2:
UnicodeDecodeError:'utf-8'codeccan'tdecodebytesinposition0-1:invalidcontinuationbyte
1、百度的时候,大家都建议在代码文件头加上字符集定义:
#-*-coding:utf-8-*-
这种方法大部分情况下可以解决大部分的问题。那么它解决的是什么问题呢?
我们需要理解两个概念:
1)、#-*-coding:utf-8-*-的作用是声明python源代码文件的编码格式。谁会读取Python的源代码呢?一个是IDE编辑工具,比如pycharm,nodpad++,editpluss等,我们在写代码的时候使用。
2)、另一个是Python解释器,是执行Python程序的时候使用。
当我们使用IDE编辑器打开Python代码的时候,如果出现乱码,我们都知道是编辑器的解码方式和代码文件的编码方式不一致导致的。需要修改编辑器的解码方式。
那么Python解释执行Python程序的时候使用的是设么解码方式呢?可以用下面的方式查看:
sys.getdefaultencoding()
可以用下面的方式修改:
reload(sys)
sys.setdefaultencod