经验 | 【解决报错】'ascii' codec can't encode character

昨天在流程开发过程中遇到以下报错:
经验 | 【解决报错】'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,那为啥还一直报编码出错的问题呢。

最后通过大佬协助,每一步打印,最终找到源文件配置表中多账号之间的分号是中文状态的符号🤦‍♀️

改为英文状态后欧克🤦‍♀️