DjangoUnicodeDecodeError和force_unicode

Kir*_*ill 5 django unicode django-admin

我有简单的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
Run Code Online (Sandbox Code Playgroud)

使用英文文本添加新消息(在管理员页面中)工作正常,但当我尝试添加俄语文本的新闻时,会出现错误:

/ admin/news/newsentry /中的TemplateSyntaxError

渲染时捕获DjangoUnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128).你传递了NewsEntry:[错误的Unicode数据](类'antek.news.models.NewsEntry')

Django版本:1.2.2

异常类型:TemplateSyntaxError

异常值:渲染时捕获DjangoUnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128).你传递了NewsEntry:[错误的Unicode数据](类'antek.news.models.NewsEntry')

异常位置:/usr/local/lib/python2.6/dist-packages/django/utils/encoding.py in> force_unicode,第88行

Python版本:2.6.5

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

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

当地的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,'序数不在范围内(128)')

代码看起来正确:self.title是unicode对象.此外,djangoproject.com在他们的博客应用程序中使用类似的代码.

我花了很多时间来解决这个问题,并创建了一个奇怪的解

from django.utils.encoding import force_unicode
# ...
def __unicode__(self):
    return force_unicode(self.title)
Run Code Online (Sandbox Code Playgroud)

但是由于self.title是unicode对象,force_unicode应该返回它而不做任何更改.

为什么return self.title不起作用?

Kir*_*ill 5

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