Django数据库编码
我遇到了一个小问题,跟编码有关。数据库里的数据没问题,用PHP选择数据时也正常。但是当我把数据拿出来,试着在模板中打印时,结果却是 - Å port,而不是 Šport,等等。
所有设置都已经调整为utf-8了,包括settings.py、模板中的meta标签、数据库表,甚至我还在模型中指定了unicode方法,但似乎都没用。我快要绝望了……
这里有一些代码:
class Category_info(models.Model):
objtree_label_id = models.AutoField(primary_key = True)
node_id = models.IntegerField(unique = True)
language_id = models.IntegerField()
label = models.CharField(max_length = 255)
type_id = models.IntegerField()
class Meta:
db_table = 'objtree_labels'
def __unicode__(self):
return self.label
我甚至尝试过用 return u"%s" % self.label。
这是视图的代码:
def categories_list(request):
categories_list = Category.objects.filter(parent_id = 1, status = 1)
paginator = Paginator(categories_list, 10)
try:
page = int(request.GET.get('page', 1))
except ValueError:
page = 1
try:
categories = paginator.page(page)
except (EmptyPage, InvalidPage):
categories = paginator.page(paginator.num_pages)
return render_to_response('categories_list.html', {'categories': categories})
也许我就是看不见或者太笨了,但就是不管用。所以如果有人能帮忙,我会非常感激,提前谢谢你。
祝好
1 个回答
0
这绝对不是Django的问题。根据我的理解,你是想查看现有的数据库(我猜是MySQL,因为这看起来是一个常见的问题,通常发生在从4.x版本升级到5.x版本时出错)。你需要找出必要的连接选项,并通过DATABASE_OPTIONS设置提供这些选项。可以试试下面这样的写法:
DATABASE_OPTIONS = {
'use_unicode': True,
'charset': 'utf8'
}