UnicodeDecodeError:在 PyCharm 社区中调试 Python 文件时出现“utf-8”

UnicodeDecodeError: 'utf-8' when debugging Python files in PyCharm Community

提问人:jaried 提问时间:4/21/2021 最后编辑:jaried 更新时间:9/30/2022 访问量:4562

问:

目前的结论:

的文件是 ->-> -> 。每次转换重新打开文件。encodingconvertedutf-8utf-8 bigansiutf-8

观察一段时间后,没有这样的误差


当我使用 PyCharm 调试文件时,文件有时会有 UnicodeDecodeError,有时是正常的。我的操作系统是Windows 10,PyCharm版本是2020.3.3社区版。.pysame

错误如下:

Traceback (most recent call last):
  File "D:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 301, in _on_run
    r = r.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1022-1023: unexpected end of data

我尝试将以下代码添加到文件头中,但有时仍然出现错误,如何解决?

#!/usr/bin/env Python
# coding=utf-8

我找到了另一种使用记事本另存为 UTF-8 文档的方法。我试过了,但有时仍然有错误。

python utf-8 pycharm

评论

1赞 bad_coder 4/21/2021
Python 模块(或文件)的默认编码为 UTF-8,您可以验证 PyCharm 编码设置。这意味着没有必要在文件顶部指定编码(问题中的最后 2 行在历史上使用过,但大多变得没有必要)。您只需在 IDE 中更改编码即可。这个问题与代码无关,而是在 IDE 中设置文件的编码。
0赞 jaried 4/21/2021
@bad_coder 谢谢。在 IDE 编码设置中,项目编码和属性文件不是 utf-8,它们已被更改。

答:

-2赞 hs2 4/21/2021 #1

添加“忽略”。成功了。

r = r.decode('utf-8', 'ignore')

https://docs.python.org/3/howto/unicode.html

评论

0赞 jaried 4/21/2021
我代码的第 10 行用 # 注释掉。它与行尾有关吗?\n
2赞 bad_coder 4/21/2021 #2

正如问题中所描述的那样,这个问题没有一个单一的答案。许多问题都可能导致指示的错误,因此最好在 PyCharm IDE 的上下文中解决几个可能的因素。

  1. 每个 Python 文件(或任何其他文件)都有一个编码。源代码文件的默认编码是 Unicode UTF-8。这个问题是初学者经常遇到的,所以让我们从官方文档中找出相关的引文(以缩短任何不必要的阅读时间):.py.py

    Python 的 Unicode 支持

    Python 源代码的默认编码是 UTF-8,因此您可以简单地在字符串文本中包含 Unicode 字符。

    这意味着在大多数情况下,您不需要编码字符串,请参阅 Python 源代码编码 - PEP 263。目前的做法是默认以 UTF-8 编码源文件,并省略模块顶部的编码字符串(这也更简洁)。

  2. PyCharm IDE 具有许多编码配置,可以依次优化,从全局到项目,再到文件路径。默认情况下,所有内容都应设置为 UTF-8,尤其是源代码。请参阅官方 PyCharm 文档配置文件编码设置

  3. 上述情况的例外情况是,如果您正在处理外部数据文件,在这种情况下,您的源代码仍应保留为 UTF-8,并且数据文件应以所需的任何编码打开。关于 的大多数问题都是关于在使用 open() 函数打开某些数据文件时指定正确的文件编码(它们与编写代码的源文件的编码无关)。UnicodeDecodeError

  4. 当源文件导致此错误时,常见原因是在复制粘贴或打开未以 UTF-8 编码的源代码文件之后。(当您从未以 UTF-8 编码的文件复制并且 IDE 不会自动将您正在复制粘贴的内容转换为编辑器时,复制粘贴尤其出乎意料)。这可能会导致上述错误。因此,您应该缩小源代码文件的编码范围,而不是 UTF-8 并对其进行转换。

我们无法访问您的项目文件,但对我来说,错误消息显示为调试器试图打开未以 UTF-8 编码的用户源代码文件,这与 IDE 配置和模块编码相反。

文件“D:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydevd_bundle\pydevd_comm.py”

评论

0赞 jaried 4/21/2021
这个文件是 PyCharm 自带的文件,我会尽量保存为 utf-8 编码格式。
1赞 bad_coder 4/21/2021
@jaried不,我不认为问题出在 PyCharm 安装附带的文件上。它可能是您编写(或正在尝试执行)的文件之一。
0赞 jaried 4/21/2021
我修改了编码设置并观察了一会儿,谢谢。
0赞 bad_coder 4/23/2021
不要尝试更改 PyCharm 安装的任何文件,否则可能会破坏 IDE。例外情况是一些 XML 配置文件
2赞 batero 3/17/2022 #3

我遇到了同样的问题,在更改了我的解释器设置中使用的 python 可执行文件的大小写后,我终于解决了它,如此处所述。长话短说,有时 PyCharm 会尝试使用(大写的“P”)而不是 .更改此设置后,我可以再次调试。venvPythonpython

评论

0赞 jaried 3/17/2022
这和我有点不同,我的操作系统是 windows。
0赞 batero 3/17/2022
我不知道 Windows 版本是如何工作的,但您可以尝试按照相同的步骤操作:检查路径中选定的解释器是否以大写形式显示,如果是,则进行更改
0赞 Artem Chege 4/11/2022 #4

看看 Stefan Ukena 在这个线程上的回答:
https://youtrack.jetbrains.com/issue/PY-14497#focus=Comments-27-5243196.0-0

如果链接失效,请引用:

您可能需要在 Pycharm >设置中更改 Python 解释器。在我的情况下(使用 pipenv),它指向带有大写 P 的 /Library/.../bin/Python.打开文件夹并检查,我发现该文件或符号链接实际上是带有小写 p 的 python。在 Pycharm 设置中将其从 .../Python 更改为 .../python 解决了此问题。(之后我不得不重新启动 Pycharm。

它也帮助了我,但只有当我切换到 pipenv 而不是通常的 venv 时。我将 Python 更改为 python 并且调试器可以工作,但我仍然收到错误/警告:

OSError: [Errno 9] Bad file descriptor 

但无论如何它都有效。如果没有调试器,它将按预期工作,并且不会出现上述错误。

1赞 Muhammad Fajar Febriano 9/30/2022 #5

我的答案

嗨,我一直在解决问题,我关注了这个博客,但在我的情况下,它是 python(小写),所以我尝试更改

from : {您的项目路径}/venv/bin/python
to : {您的项目路径}/venv/bin/python3.8

我不知道为什么,但它对我有用。