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()
加载时:
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
那么是什么原因造成的呢?
最佳答案
所以经过尝试,unicode字符串应该总是被编码并保存为字符串。 get时总是decode。代码来了:
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')
关于python - Redisco ListField unicode 保存错误但验证为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413315/