众所周知,python3相比python2的一个最大的改变就是str统一是unicode编码的,带有中文的字符串再也不用写成 u'中文' 这么麻烦,但是最近却遇到了 print('中文') 报错。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-158: ordinal not in range(128)
这个问题只发生在生产环境上,本地环境没有问题。那么首先考虑的就是生产环境和本地环境差别在哪里了-----启动方式。
生产环境上使用了 uWSGI 来做服务器处理web请求,而本地环境不是。
生产环境系统中尝试打印出 stdout 的编码:
import sys print(sys.stdout.encoding) # ANSI_X3.4-1968
解决方法:
在 uwsgi 的配置文件中加入一句,用来设置python使用的编码格式。
env = LC_CTYPE=zh_CN.utf-8
2019-7-7 20:31:8
评论区