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

2024-03-11

目前结论:

The encoding of the converted文件是utf-8->utf-8 big->ansi -> utf-8. Reopen之后的文件每次转换.

经过一段时间的观察,有没有这样的错误.


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

错误如下:

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文档的方法。我尝试了一下,但有时还是会出现错误。


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

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

    Python 的 Unicode 支持 https://docs.python.org/3/howto/unicode.html#python-s-unicode-support

    Python 源代码的默认编码是 UTF-8,因此您只需在字符串文字中包含 Unicode 字符即可。

    这意味着在大多数情况下您不需要编码字符串,请参阅Python 源代码编码 - PEP 263 https://www.python.org/dev/peps/pep-0263。当前的做法是默认使用 UTF-8 编码源文件,并省略模块顶部的编码字符串(这也更简洁)。

  2. PyCharm IDE 具有许多可以连续细化的编码配置,从全局到项目,再到文件路径。默认情况下,所有内容都应设置为 UTF-8,尤其是源代码。请参阅 PyCharm 官方文档配置文件编码设置 https://www.jetbrains.com/help/pycharm/encoding.html#file-encoding-settings.

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

  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”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PyCharm 社区中调试 Python 文件时出现 UnicodeDecodeError: 'utf-8' 的相关文章

随机推荐