Docker中使用uWSGI启动Django项目报错 'ascii' codec can't encode characters in position 223-224: ordinal not in range(128)
运行环境
- Docker
- uWSGI
- Django
问题出现
使用python manage.py runserver
启动项目,没有出现这个问题,但是使用uWSGI启动项目后,接受到POST请求中带有中文,就报500错误。开启DEBUG模式,捕捉到错误提示为
'ascii' codec can't encode characters in position 223-224: ordinal not in range(128)
原因
系统语言不是utf-8
的编码
查看当前本机编码
locale
可以发现值都是POSIX
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
解决方法
-
安装
en_US.UTF-8
locale-gen en_US.UTF-8
如果出现错误,需要先安装
locale-gen
apt-get install locale-gen -y
-
设置系统编码
编辑/etc/profile
,在文件最末尾添加如下内容:export LC_ALL=en.US.UTF-8
-
重新编译
source /etc/profile
参考文章:https://blog.csdn.net/qq_35371031/article/details/105602321