经验 | 【解决报错】'ascii' codec can't encode character
昨天在流程开发过程中遇到以下报错:
编码问题嘛,问题不大,找到解决方案说是在程序中修改所有涉及到编码的地方,强制编码为 utf8,即添加代码 encode(“utf8”),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告。
打开提示编码报错的文件:utils.py
然后调试的过程一步步让人崩溃。。下次你们千万别和我犯一样的错误了。
首先按照百度的方法修改了文件的编码方式:
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
再次运行测试报错:
NameError: name ‘reload’ is not defined
好嘛,没定义一定是有什么包没导入吧。🤦♀️往下看代码吧
import importlib
importlib.reload(sys)
心想这下应该没有问题了吧,再次运行继续报错:
module ‘sys’ has no attribute ‘setdefaultencoding’
????当时就黑人问号脸了,继续查官方文档,查询结论总结如下:
- Python 3 与 Python 2 有很大的区别,其中 Python 3 系统默认使用的就是 utf-8 编码。
- 所以,对于使用的是 Python 3 的情况,就不需要 sys.setdefaultencoding(“utf-8”) 这段代码。
- 最重要的是,Python 3 的 sys 库里面已经没有 setdefaultencoding() 函数了。
这可太奇怪了,因为设计器内置的 python 就是 3,那为啥还一直报编码出错的问题呢。
最后通过大佬协助,每一步打印,最终找到源文件配置表中多账号之间的分号是中文状态的符号🤦♀️
改为英文状态后欧克🤦♀️