'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)
中文示意:ASCII编解码器无法编码字符
解决方案一:
python默认环境编码通过下面的方法可以获取:
import sys
print(sys.getdefaultencoding())
# 输出为:
ascii
# 基本上是ascii编码方式,由此Python自然调用ascii编码解码程序去处理字符流
# ,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。
解决的方案很简单,修改默认的编码模式
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
解决方案二:在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
总结:一旦遇到编码的问题,如果不是数据本身的问题,或者操作数据库字段定义的问题上,那就要转向环境的配置的默认编码上!刚开始出了这个BUG,有点不知所措,现在了解了原因的时候,一切都那么简单!