Ошибка syncdb manage.py, когда модель Django использует не-ascii verbose_name

Я новичок в Джанго.

Я хочу, чтобы название моих моделей отображалось на китайском языке, поэтому я использовал verbose_name в своем метаклассе моей модели, коды ниже:

#this models.py file is encoded in unicode

class TS_zone(models.Model):
    index = models.IntegerField()
    zone_name = models.CharField(max_length=50);
    zone_icon = models.ImageField(upload_to='zone_icon', null=True)
    is_active = models.NullBooleanField(blank=True, null=True)
    status = models.CharField(max_length=7,choices=SETTING_STATUS_CHOICES)
    class Meta:
        ordering = ('index',)
        verbose_name = u'你好嗎?'
        verbose_name_plural = u'你們都好嗎?'

    def __unicode__(self):
        return self.zone_name

Однако, когда я запускаю manage.py syncdb, возникают следующие ошибки:

File "E:\pythonroot\myproject\..\myproject\myapp\models.py", line 19
SyntaxError: Non-ASCII character '\xe4' in file
E:\pythonroot\myproject\..\myproject\myapp\models.py on line 19, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Похоже, manage.py не может обрабатывать символы, отличные от ascii, в моем verbose_name. Что-то я сделал не так?

Спасибо.


person Bill Kary    schedule 07.09.2010    source источник


Ответы (1)


Вы должны указать кодировку. Добавьте следующую строку в качестве первой строки вашего файла models.py.

# encoding: utf-8

Обновить

ОП отредактировал свой вопрос, чтобы сказать, что «models.py закодировано в Unicode». Тогда ошибка странная. У меня работает с Django 1.2.1, Python 2.6.2 на Ubuntu Jaunty.

Обновление 2

Можете ли вы опубликовать строку кодировки, которую вы использовали для своего models.py?

person Manoj Govindan    schedule 07.09.2010
comment
Он отлично работает после того, как я добавил # encoding: utf-8 , большое спасибо. - person Bill Kary; 07.09.2010
comment
Нет такой вещи, как «кодировка в Unicode». Юникод не является кодировкой. - person Daniel Roseman; 07.09.2010