我正在使用UserProfile模型:
def repeated_times(self, test, date):
return self.user.user_test_results.filter(taken_date__month=date.month, djangotest=test).count()
但我正在
'utf8' codec can't decode byte 0xe4 in position 169: invalid continuation byte
我错过了什么?
答案 0 :(得分:2)
Mitteleuropa是德国的中欧名词。 MitteleuropäischeZeit是中欧时代。
在任何情况下,0xe4
确实是一个UTF-8连续字节,因为前面的p
(0x70
,{{1},它在UTF-8字符串的错误位置}})是not a character that can be continued,因为它不是以一位开头的:
0b01110000
所以我认为你的文本实际上不是编码为UTF-8。实际上,代码点Mitteleurop\xe4ische Zeit
在原始IBM PC代码页437中显示为0xe4
字符。
现在我不确定这实际上是一个数据库问题(至少对于您要查询的特定表)。实际问题似乎出现在存储查询的ä
变量中:
input
因此,我首先要查看生成SELECT something
FROM somewhere
WHERE some condition
AND EXTRACT('month' FROM "djtest_result"."taken_date"
AT TIME ZONE 'Mitteleurop\xe4isch Zeit') = 10
...
变量的任何代码片段,看它是否是罪魁祸首。时区可能来自数据库,也可能来自配置项,或者可能是硬编码的。 不是的是有效的UTF-8编码。
答案 1 :(得分:1)
我必须禁用USE_TZ
,然后才有效。