Pregunta

Soy bastante nuevo en Django.

Quiero el nombre de mis modelos que se mostrará en chino, así que utilicé en mi clase verbose_name meta de mi modelo, los códigos a continuación:

#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

Sin embargo, cuando corro syncdb manage.py, los siguientes errores lanza:

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

Parece que manage.py no puede procesar caracteres no ASCII en mi verbose_name. Todo lo que he hecho mal?

Gracias.

¿Fue útil?

Solución

Tiene que especificar una codificación. Agregue la línea siguiente como la primera línea de su archivo models.py.

# encoding: utf-8

Actualizar

El PO ha editado su pregunta a decir que la "models.py se codifica en Unicode". Entonces el error es extraño. A mí me funciona usando Django 1.2.1, Python 2.6.2 en Ubuntu Jaunty.

Actualización 2

Se puede publicar la serie de codificación que haya utilizado para su models.py?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top