Django 使用uwsgi 部署在 nginx上,中文乱码

众所周知,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

点赞