Python ';utf8';编解码器可以';t解码字节0xe4…:时区中的连续字节无效
我在UserProfile模型中执行以下操作:Python ';utf8';编解码器可以';t解码字节0xe4…:时区中的连续字节无效,python,django,Python,Django,我在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
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
因为:
(大图:)
我遗漏了什么?Mitteleuropa是德语中对中欧的称呼。Mitteleuropäische Zeit是中欧时间 在任何情况下,
0xe4
确实是一个UTF-8连续字节,它位于UTF-8字符串的错误位置,因为前面的p
(0x70
,0b01110000
)不是以一位开头的:
Mitteleurop\xe4ische Zeit
所以我认为你的文本实际上没有被编码成UTF-8。事实上,代码点0xe4
在原始IBM PC代码页437中显示为ä
字符
现在我不确定这是否是一个数据库问题(至少对于您正在查询的特定表)。实际问题似乎出现在存储查询的输入
变量中:
SELECT something
FROM somewhere
WHERE some condition
AND EXTRACT('month' FROM "djtest_result"."taken_date"
AT TIME ZONE 'Mitteleurop\xe4isch Zeit') = 10
...
因此,我将首先查看生成
input
变量的任何一段代码,看看它是否是罪魁祸首。时区可能来自数据库、配置项,也可能是硬编码的。它不是有效的UTF-8编码。Mitteleuropa是德语中对中欧的称呼。Mitteleuropäische Zeit是中欧时间
在任何情况下,0xe4
确实是一个UTF-8连续字节,它位于UTF-8字符串的错误位置,因为前面的p
(0x70
,0b01110000
)不是以一位开头的:
Mitteleurop\xe4ische Zeit
所以我认为你的文本实际上没有被编码成UTF-8。事实上,代码点0xe4
在原始IBM PC代码页437中显示为ä
字符
现在我不确定这是否是一个数据库问题(至少对于您正在查询的特定表)。实际问题似乎出现在存储查询的输入
变量中:
SELECT something
FROM somewhere
WHERE some condition
AND EXTRACT('month' FROM "djtest_result"."taken_date"
AT TIME ZONE 'Mitteleurop\xe4isch Zeit') = 10
...
因此,我将首先查看生成
input
变量的任何一段代码,看看它是否是罪魁祸首。时区可能来自数据库、配置项,也可能是硬编码的。它不是有效的UTF-8编码。Mitteleuropa是德语中对中欧的称呼。Mitteleuropäische Zeit是中欧时间
在任何情况下,0xe4
确实是一个UTF-8连续字节,它位于UTF-8字符串的错误位置,因为前面的p
(0x70
,0b01110000
)不是以一位开头的:
Mitteleurop\xe4ische Zeit
所以我认为你的文本实际上没有被编码成UTF-8。事实上,代码点0xe4
在原始IBM PC代码页437中显示为ä
字符
现在我不确定这是否是一个数据库问题(至少对于您正在查询的特定表)。实际问题似乎出现在存储查询的输入
变量中:
SELECT something
FROM somewhere
WHERE some condition
AND EXTRACT('month' FROM "djtest_result"."taken_date"
AT TIME ZONE 'Mitteleurop\xe4isch Zeit') = 10
...
因此,我将首先查看生成
input
变量的任何一段代码,看看它是否是罪魁祸首。时区可能来自数据库、配置项,也可能是硬编码的。它不是有效的UTF-8编码。Mitteleuropa是德语中对中欧的称呼。Mitteleuropäische Zeit是中欧时间
在任何情况下,0xe4
确实是一个UTF-8连续字节,它位于UTF-8字符串的错误位置,因为前面的p
(0x70
,0b01110000
)不是以一位开头的:
Mitteleurop\xe4ische Zeit
所以我认为你的文本实际上没有被编码成UTF-8。事实上,代码点0xe4
在原始IBM PC代码页437中显示为ä
字符
现在我不确定这是否是一个数据库问题(至少对于您正在查询的特定表)。实际问题似乎出现在存储查询的输入
变量中:
SELECT something
FROM somewhere
WHERE some condition
AND EXTRACT('month' FROM "djtest_result"."taken_date"
AT TIME ZONE 'Mitteleurop\xe4isch Zeit') = 10
...
因此,我将首先查看生成
input
变量的任何一段代码,看看它是否是罪魁祸首。时区可能来自数据库、配置项,也可能是硬编码的。它不是有效的UTF-8编码。我不得不禁用USE\u TZ
,然后它就工作了 我不得不禁用使用
,然后它就工作了 我不得不禁用使用
,然后它就工作了 我不得不禁用使用
,然后它就工作了 我不想禁用使用\u TZI不想禁用使用\u TZI不想禁用使用\u TZI不想禁用使用\u TZsodjtest\u结果。take\u date
不在utf-8中?@doniyor,这是我(相对受过教育的)的猜测。但是datetime字段怎么可能不在utf8中,db本身在utf8中:有什么想法吗?@doniyor,抱歉,误解了。不是数据库内容编码不好,而是提取。。。在时区
子句中。不知道时区是从哪里来的。我将更新答案以澄清。@Jasper,网络上有大量的文本似乎是用umlaut显示的(没有也一样多),但我现在要听你的。我已经给慕尼黑的一些朋友发了一封快速的电子邮件确认:-)那么djtest\u结果。take\u date
不在utf-8中吗?@doniyor,这是我(相对受过教育的)猜测。但是datetime字段怎么可能不在utf8中呢,db本身在utf8中:有什么想法吗?@doniyor,对不起,误解了。不是数据库内容编码不好,而是提取。。。在时区
子句中。不知道时区是从哪里来的。我将更新答案以澄清。@Jasper,网络上有大量的文本似乎是用umlaut显示的(没有也一样多),但我现在要听你的。我已经给慕尼黑的一些朋友发了一封快速的电子邮件以确认:-)那么,djtest\u结果。take\u date
不在utf-8中吗?@doniyor,那将是我的(相对受教育的)