相关疑难解决方法(0)

如何更改MySQL列的排序规则类型?

我有utf-8 Vs. 这里提到的字节串问题:Django头痛与简单的非ascii字符串

我不关心MySQL列中的区分大小写匹配,我只是总是想要返回UTF-8字符串,因为我发现不可能处理为非ascii文本返回字符列的字节串.

如何更改我的MySQL排序规则类型,以便始终通过Django返回UTF-8字符串?

mysql django utf-8

18
推荐指数
2
解决办法
1万
查看次数

DjangoUnicodeDecodeError和force_unicode

我有简单的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不起作用?

django unicode django-admin

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

django ×2

django-admin ×1

mysql ×1

unicode ×1

utf-8 ×1