gpt4 book ai didi

Django UnicodeDecodeError 和 force_unicode

转载 作者:行者123 更新时间:2023-12-04 17:13:17 25 4
gpt4 key购买 nike

我有一个简单的 Django 新闻条目模型:

class NewsEntry(models.Model):
pub_date = models.DateTimeField('date published')
title = models.CharField(max_length = 200)
summary = models.TextField()
content = models.TextField()

def __unicode__(self):
return self.title
添加带有英文文本的新新闻(在管理页面中)工作正常,但是当我尝试添加带有俄文文本的新闻时出现错误:

TemplateSyntaxError at /admin/news/newsentry/

Caught DjangoUnicodeDecodeError while rendering: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128). You passed in NewsEntry: [Bad Unicode data] (class 'antek.news.models.NewsEntry')

Django Version: 1.2.2

Exception Type: TemplateSyntaxError

Exception Value: Caught DjangoUnicodeDecodeError while rendering: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128). You passed in NewsEntry: [Bad Unicode data] (class 'antek.news.models.NewsEntry')

Exception Location: /usr/local/lib/python2.6/dist-packages/django/utils/encoding.py in >force_unicode, line 88

Python Version: 2.6.5


回溯列表中的最后一项是:

/usr/local/lib/python2.6/dist-packages/django/utils/encoding.py in force_unicode

Local vars:

e: UnicodeDecodeError('ascii', '\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82 \xd1\x80\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe', 0, 1, 'ordinal not in range(128)')


代码看起来正确: self.title 是 unicode 对象。此外,djangoproject.com 在他们的 blog application 中使用了类似的代码。 .
我花了很多时间来解决这个问题,并找到了奇怪的解决方案:
from django.utils.encoding import force_unicode
# ...
def __unicode__(self):
return force_unicode(self.title)
但是由于 self.title 是 unicode 对象, force_unicode 应该没有任何更改地返回它。
为什么 return self.title不起作用?

最佳答案

问题出在 MySQL 服务器的 utf8_bin 排序规则中。完整信息 here.

关于Django UnicodeDecodeError 和 force_unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com