尝试呈现模板时,出现以下错误:
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'>)
该模板非常大且复杂,因此我希望获得一些技巧,以了解如何精确地确定其来源。
一些可能有用的事实:
模板通常是unicode友好的;我们通过它显示了大量的unicode数据
数据来自的mysql表具有utf8编码
这很奇怪:使用相同的代码库和相同的生产数据时,错误没有显示在我的登台服务器上。设置与生产服务器非常相似:Python 2.5.1,Django-1.1.1,mysql 5.0.38,ubuntu。
我不确定确切在哪里查找编码错误的数据,任何提示或指针将不胜感激。
最佳答案
在某个地方您会截断字符串,但是您是在str
而不是unicode
上执行的,因此最终将UTF-8字符序列分成两半。始终对unicode
执行文本操作,而不对str
执行文本操作。