我的数据库中有一些奇怪的字符,在返回页面时似乎搞乱了django。我得到了这个错误:
TemplateSyntaxError at /search/legacy/
Caught an exception while rendering: Could not decode to UTF-8 column 'maker' with text 'i� G�r'
(实际文字略有不同,但因为它是公司名称,我已经改变了它)
我怎样才能让django输出这段文字?我目前正在从sqlite(快速开发)运行该网站,这是问题吗?
另外,在完全不相关的说明中,是否可以使用数据库视图?
感谢
答案 0 :(得分:1)
可能不是。
Django在内部使用UTF-8字符串,似乎您的数据库返回一些无效字符串。您应该修复数据库中的数据,并在所有应用程序中使用UTF-8(数据导入,数据库,模板,源文件......)。
答案 1 :(得分:0)
我与使用Apple的iPages创建文章的网站所有者存在相关问题,然后复制粘贴到Django管理文本框中。这个过程创造了“有趣的角色”,搞砸了Django和/或MySQL(你不会相信不同的双左/右引号字符的数量)。我不能'修复'客户所以我有一个功能,寻找已知的陌生感,并将其转换为有用的东西。一个完整的PITA。
答案 2 :(得分:0)
这是一个令人困惑的错误消息,并且在不知道更多细节的情况下我不清楚问题的根源是什么(错误消息“解码为UTF-8”似乎是错误的,因为通常你会编码为UTF-8)。也许Django期望在其他编码中找到数据,并试图对其进行解码并重新编码为UTF-8,但是对某些对预期编码无效的字符会窒息?
通常,您希望确保在数据库中存储UTF-8,并且在内部您在代码中的任何位置使用unicode对象(而不是str对象)。
其他一些可能有用的阅读材料: