0
class Article(models.Model):
       title = models.Attribute()
       tags = models.ListField(unicode)

 new = Article(title='what ever')
 new.tags = [ u'Niña', u'Niñb' ]

 new.is_validate()
 >>> True

 new.save()

ロード中:</p>

Article.objects.all()

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

redis-cli:

redis 127.0.0.1:6379> GET "Article:tags:5omv5reh"
(error) ERR Operation against a key holding the wrong kind of value

では、これを引き起こした理由は何ですか?

4

1 に答える 1

1

したがって、試した後、Unicode 文字列は常にエンコードされ、文字列として保存されます。get 時は必ずデコードします。コードは次のとおりです。

class Article(models.Model):
       title = models.Attribute()
       tags = models.ListField(str)

 new = Article(title='what ever')
 new.tags = [ u'Niña'.encode('utf-8'), u'Niñb'.encode('utf-8') ]

 new.is_validate()
 >>> True

 new.save()

印刷時:

 articles = Article.objects.all()
 for i in articles:
     print i.decode('utf-8')
于 2013-12-06T08:16:51.813 に答える