一、print( ) 打印出错
错误信息
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
解决办法:
启动项目时对PYTHONIOENCODING进行定义为utf-8
示例 PYTHONIOENCODING=utf-8 python helloword.py
二、Logging日志报错
错误信息
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.6/logging/__init__.py", line 996, in emit
stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 271-272: ordinal not in range(128)
解决方法
修改日志模块logging的相关配置,logging.FileHandler(filename=log_name)这一行代码的括号中加上encoding='utf-8'这个参数
示例 logging.FileHandler(encoding='utf-8', filename=log_name)
三、总结
以上两种错误的解决方法亲测非常有效,但个人觉得 有点治标不治本的意思,我猜测可能是整个服务器python的运行环境没有设置为utf-8, 如整个服务器的环境设置为utf-8可以同时解决掉以上两种问题,其它python项目运行也不会再出现此类错误,具体验证和怎么改我还在去探索哈哈,欢迎大家交流和提建议。