为什么在Django2.0项目中将ASCII编码设置为默认值?如何改变它?

为什么在Django2.0项目中将ASCII编码设置为默认值?如何改变它?,django,python-3.x,unicode,utf-8,ascii,Django,Python 3.x,Unicode,Utf 8,Ascii,推送到服务器后,我的Django应用程序开始在代码的不同位置(例如,在打印、在视图中处理请求)引发UnicodeEncodeError: ASCII编解码器?我使用Django2.0和Python3.6,它们都默认使用UTF-8。 另外,对于配置,我仍然使用SQLite,它总是使用UTF-8进行内部编码,所以这不是数据库的问题。 我没有任何额外的编码设置(我使用诸如LANGUAGE\u code,use\u I18N,use\u L10N,但我看不出这有什么关系),尤其是我没有设置默认字符集或L

推送到服务器后,我的Django应用程序开始在代码的不同位置(例如,在打印、在视图中处理请求)引发UnicodeEncodeError:

ASCII编解码器?我使用Django2.0和Python3.6,它们都默认使用UTF-8。 另外,对于配置,我仍然使用SQLite,它总是使用UTF-8进行内部编码,所以这不是数据库的问题。 我没有任何额外的编码设置(我使用诸如
LANGUAGE\u code
use\u I18N
use\u L10N
,但我看不出这有什么关系),尤其是我没有设置
默认字符集
LC\u CTYPE

在我的本地计算机上,我的应用程序运行正常,因此我检查了服务器上的环境bin/activate文件,但没有发现任何可疑之处

我甚至试图通过在顶部添加
#-*-coding:utf-8-*-
来明确设置编码,但没有明显效果


这个问题的根源是什么?服务器订单应用程序上的哪些设置可以尝试使用ascii编解码器对非ascii字符进行编码?如何更改?

确保您的服务器配置为使用python 3。可能您的安装脚本中提到了Python2,这就是在server.Hmmm上安装的内容,但Django2.0甚至不能与Python2一起使用。服务器上安装的Python版本是3.6.4。有没有为这个项目从Python 2升级到Python 3?有报道称升级到Python3时会导致unicodedecodeerror。不是真的。服务器上的项目始终是python3,但部分代码取自python3应用程序,它曾经是python2。如何测试这是否是问题的根源?在Python 3中,UTF-8是源代码编码(因此不需要源代码声明)和
str.encode/decode
的默认值。但是,
open
ing文件和从std频道读/写std频道的默认设置取决于平台/地区。
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 165-168: ordinal not in range(128)