在Djang中声明DB field时,verbose_name参数中的Nonascii字符串

2024-04-26 18:00:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我声明:

#This file is using encoding:utf-8
...
class Buddy(models.Model):
    name=models.CharField('ФИО',max_length=200)
    ...

。。。在模型.py. 管理.pysyncdb工作顺利。但是,当我进入管理界面并尝试添加一个新的好友时,我发现了一个djangunicodedecodeError,它说:“utf8”编解码器无法解码0-1位置的字节:无效数据。您传入了“\xd4\xc8\xce”(<;type'str'amp;ltr;)”。在

我使用的是sqlite3,所以所有的字符串都存储为用utf8编码的bytestrings。Django的编码也是utf8。看过django关于这个话题的文档,不知道。在

UPD:最终我发现了问题所在。结果是我用ANSI编码保存了我的源代码。在

解决方案:我用UTF-8保存了源代码,它产生了奇迹。在


Tags: name声明编码model源代码ismodelsutf8
1条回答
网友
1楼 · 发布于 2024-04-26 18:00:05

首先,我将您的描述显式定义为Unicode字符串:

class Buddy(models.Model):
    name=models.CharField(u'ФИО',max_len)

注意u'ФИО'中的“u”。在

其次,您的模型中是否定义了__unicode__()函数?如果是,请确保它返回Unicode字符串。当管理接口尝试访问模型的unicode表示时,很可能会遇到此错误,而不是将其添加到数据库中时。如果从__unicode__()返回非unicode字符串,则可能会导致此问题。在

相关问题 更多 >