本文主要是介绍解决Python2.7的UnicodeEncodeError: ‘ascii‘codec can’t encode异常错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码上面应该没有什么问题,Python使用的是版本2.7,但是在运行的时候出现了异常错误UnicodeEncodeError:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-78: ordinal not in range(128)
貌似是因为编码问题:Unicode编码与ASCII编码的不兼容,其实这个Python脚本文件是由utf-8编码的,Python默认环境编码通过下面的方法可以获取:
import sys
print sys.getdefaultencoding()
# 'ascii'
基本上是ascii编码方式,由此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。
解决的方案很简单,修改默认的编码模式,很多朋友会想到setdefaultencoding,是的,我们可以通过sys.setdefaultencoding(‘utf-8’)来将当前的字符处理模式修改为utf-8编码模式,值得注意的是,如果单纯这么调用的话,Python会抛出一个AttributeError异常:
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'
竟然说sys没有setdefaultencoding的方法,其实sys是有这个方法的,但是要调用一次reload(sys)。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
另外有一种解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode(“utf8”),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告。
这篇关于解决Python2.7的UnicodeEncodeError: ‘ascii‘codec can’t encode异常错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!