【发布时间】:2021-05-18 17:06:53
【问题描述】:
我正在将项目从 django 1.11 迁移到 django 2 并遇到以下问题。在 django 1.11 上从 python 2.7 迁移到 python 3.6 后,有很多 UnicodeDecodeError's
当我试图通过 ORM 获取一些数据时。例如:
class JournalName(models.Model):
id = models.AutoField(primary_key=True)
par_id = models.ForeignKey('Journal', db_column='par_id')
parent = models.CharField(max_length=255)
name = models.TextField(blank=True, db_column=u'name')
lang = models.CharField(max_length=10, blank=True)
class Meta:
db_table = 'journal_name'
def __str__(self):
return self.name
以下打印:
print(JournalName.objects.all())
有错误的结果:
UnicodeEncodeError: 'ascii' codec can't encode character '\u0142' in position 768: ordinal not in range(128)
项目正在使用带有 utf8 的 MySQL 数据库。我试图调试这个,但我不知道是什么导致了这个问题。在 python 2.7 上一切正常,所以与 py2 相比,代码中可能还有一些我应该改变的东西? 我不得不删除数据库设置中的一些导致其他错误的选项,但也许它与此有关:
'OPTIONS': {
"init_command": "set names latin1;",
}
【问题讨论】:
-
好的,但我无法对 Django QuerySet 进行编码。我认为它与设置或其他东西有关
-
在您的模型定义中,'____str____' 函数是什么样的?
-
你找到解决办法了吗?
标签: python-3.x django python-2.7 unicode