首页 > 解决方案 > 在 PyCharm 社区中调试 Python 文件时出现 UnicodeDecodeError: 'utf-8'

问题描述

目前的结论:

该文件是encoding- > -> -> 。每次转换后重新打开文件。convertedutf-8utf-8 bigansiutf-8

观察一段时间后,没有出现这样的错误


我使用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 文档的方法。我试过了,但有时还是有错误。

标签: pythonutf-8pycharm

解决方案


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

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

    Python 的 Unicode 支持

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

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

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

  3. 如果您正在处理外部数据文件,则上述情况除外,在这种情况下,您的源代码仍应保留为 UTF-8,并且使用所需的任何编码打开数据文件。大多数问题UnicodeDecodeError都是关于在使用该 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”


推荐阅读