我宣布:
#This file is using encoding:utf-8
...
class Buddy(models.Model):
name=models.CharField('ФИО',max_length=200)
...
...在models.py中。 manage.py syncdb运行顺畅。然而,当我去管理界面并尝试添加一个新的Buddy时,我抓住了一个DjangoUnicodeDecodeError,它说:“'utf8'编解码器无法解码位置0-1中的字节:无效数据。你传入'\ xd4 \ xc8 \ xce'(< type'str'< r;)“。
我正在使用sqlite3,因此所有字符串都存储为utf8编码的字节串。 Django的编码也是utf8。看到django关于这个主题的文档,不知道。
UPD:最终我发现了问题所在。结果是我用ANSI编码保存了我的源代码。解决方案:我使用UTF-8保存了源代码,它创造了奇迹。
答案 0 :(得分:5)
首先,我会将您的描述明确定义为Unicode字符串:
class Buddy(models.Model):
name=models.CharField(u'ФИО',max_len)
请注意u'ФИО'
中的“u”。
其次,您的模型上是否定义了__unicode__()
函数?如果是这样,请确保它返回Unicode字符串。当Admin界面尝试访问模型的unicode表示时,很可能会出现此错误,而不是在将其添加到数据库时。如果您从__unicode__()
返回非unicode字符串,则可能会导致此问题。