如何跟踪 UnicodeDecode错误:'utf8'编解码器无法解码位置 1950 中的字节0x85:无效的起始字节



我试图在开发中运行应用程序,但我不断得到UnicodeDecodeError:"utf8"编解码器无法解码位置 1950 中的字节0x85:无效的起始字节

请如何跟踪代码的确切部分,因为我无法理解它的错误来源下面是完整的错误屏幕

{u'selected': {}, u'categories': {u'ratings': ((1, u'*'), (2, u'**'), (3, u'***'), (4, u'****'), (5, u'*****')), u'genre s': <QuerySet []>, u'actors': <QuerySet []>, u'directors': <QuerySet []>}}
Internal Server Error: /movie/
Traceback (most recent call last):
File "c:python27libsite-packagesdjangocorehandlersexception.py", line 41, in inner
response = get_response(request)
File "c:python27libsite-packagesdjangocorehandlersbase.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "c:python27libsite-packagesdjangocorehandlersbase.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:UsersRolandDocumentsWeb2myproject_envmyproject2moviesviews.py", line 70, in movie_list
return render(request, "movies/movie_list.html",context)
File "c:python27libsite-packagesdjangoshortcuts.py", line 30, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "c:python27libsite-packagesdjangotemplateloader.py", line 67, in render_to_string
template = get_template(template_name, using=using)
File "c:python27libsite-packagesdjangotemplateloader.py", line 21, in get_template
return engine.get_template(template_name)
File "c:python27libsite-packagesdjangotemplatebackendsdjango.py", line 39, in get_template
return Template(self.engine.get_template(template_name), self)
File "c:python27libsite-packagesdjangotemplateengine.py", line 162, in get_template
template, origin = self.find_template(template_name)
File "c:python27libsite-packagesdjangotemplateengine.py", line 136, in find_template
name, template_dirs=dirs, skip=skip,
File "c:python27libsite-packagesdjangotemplateloadersbase.py", line 38, in get_template
contents = self.get_contents(origin)
File "c:python27libsite-packagesdjangotemplateloadersfilesystem.py", line 29, in get_contents
return fp.read()
File "C:UsersRolandDocumentsWeb2myproject_envlibcodecs.py", line 314, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x85 in position 1950: invalid start byte

当然,阅读这样的长回溯可能会很棘手。

首先,您需要知道如何读取回溯的行。它们成对出现:对在哪里可以找到代码的描述,以及代码片段。像这样,最后一对行:

File "C:UsersRolandDocumentsWeb2myproject_envlibcodecs.py", line 314, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)

这会告诉您要查找哪个文件、行号和函数以查找所涉及的代码行。最后一行是引发实际错误的行。但是,它不是您的代码行 - 它来自库。很少需要读取库的代码来调试代码中的异常。所以我们看看下一个阵容:

File "c:python27libsite-packagesdjangotemplateloadersfilesystem.py", line 29, in get_contents
return fp.read()

这条线叫做我们刚才看的那条线。它也不是你的代码 - 它来自django。所以你不断地向上查找,一行一行,直到你从代码中找到一行。在这里:

File "C:UsersRolandDocumentsWeb2myproject_envmyproject2moviesviews.py", line 70, in movie_list
return render(request, "movies/movie_list.html",context)

这不是导致异常的行,但它是你负责的代码的最后一部分,最终导致异常。因此,这很可能是您需要进行更改的地方。事实上,进一步查看回溯,这是您唯一可以控制的行 - 其余的都在库中。因此,这绝对是您需要进行更改的地方。现在,您可以缩小搜索范围以查找更多信息:您需要以某种方式使用不同的参数调用render。我会搜索django render UnicodeDecodeError.事实上,第一个命中是另一个具有完全相同问题的堆栈溢出问题!不幸的是,答案不是很有帮助。但如果你继续搜索,你会发现一个。

最新更新