Django数据库编码

0 投票
1 回答
2000 浏览
提问于 2025-04-15 22:17

我遇到了一个小问题,跟编码有关。数据库里的数据没问题,用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'
}

撰写回答