尝试渲染模板时,我收到以下错误:
DjangoUnicodeDecodeError: 'utf8' codec can't decode bytes in position 26-27: invalid data. You passed in '\xce\x88\xce\xbe\xce\xbf\xce\xb4\xce\xb1 \xcf\x83\xcf\x84\xce\xb7\xce\xbd \xce\xb5\xcf\x81\xce\xb3\xce...' (<type 'str'>)
这个模板相当庞大而且复杂,所以我希望能找到一些关于如何追踪这些内容的技巧。
一些可能有用的事实:
我不确定在哪里查找编码错误的数据,任何提示或指针都会受到赞赏。
答案 0 :(得分:4)
某处你正在截断一个字符串,但你是在str
而不是unicode
上进行的,所以你最终将UTF-8字符序列分成两半。始终在unicode
上执行文本操作,而不是str
。
答案 1 :(得分:1)
异常报告的内容是26个字节的有效UTF-8,后跟'\xce...'
在我的代码或Django的代码中,某些软件看起来像是这样的东西:
def too_big_display(strg, maxlen):
return strg[:maxlen-3] + "..."
并在您的情况下使用too_big_display(your_Greek_text_encoded_in_utf8,30)
因此您看到次要错误 ... \xce.
无效UTF-8。
我建议您仔细查看追溯(您应该向我们展示,并且仍然可以通过编辑您的问题)查看是否有任何内容主要错误的证据。如果没有,请仔细检查您的代码是否有这种截断。
答案 2 :(得分:0)
如果有人像我一样有类似的情况: 我最近更改了MySQL表以使用collation utf8_bin并遇到了同样的问题。我发现在升级中我有MySQL-python 1.2.3。升级到1.2.4解决了我的问题。我使用的是python2.7,Django1.4.2。