Unicode编码错误:在PyCharm社区中调试Python文件时使用'utf-8'

dzhpxtsq  于 2022-11-08  发布在  PyCharm
关注(0)|答案(5)|浏览(396)

当前结论:

converted文件的encodingutf-8-〉utf-8 big-〉ansi-〉utf-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文档的方法。我试过了,但有时还是会出现错误。

hfwmuf9z

hfwmuf9z1#

问题中所描述的问题并没有一个答案。许多问题都可能导致所示的错误,因此最好在PyCharm IDE的上下文中解决几个可能的因素。
1.每一个Python文件.py(或者任何其他文件)都有一个编码。.py源代码文件的默认编码是Unicode UTF-8。初学者经常会遇到这个问题,所以让我们从官方文档中找出相关的引用(以缩短不必要的阅读时间):
Python的Unicode支持
Python源代码的默认编码是UTF-8,因此您可以简单地在字符串文字中包含Unicode字符。
这意味着在大多数情况下,你不需要编码字符串,参见Python Source Code Encodings - PEP 263。当前的做法是在默认情况下用UTF-8编码源文件,并省略模块顶部的编码字符串(这也更简洁)。

  1. PyCharm IDE有许多编码配置,可以从全局到项目再到文件路径进行连续优化。默认情况下,所有内容都应该设置为UTF-8,尤其是源代码。请参阅PyCharm官方文档配置文件编码设置。
    1.如果您正在处理外部数据文件,在这种情况下,您的源代码仍然应该保留为UTF-8格式,而数据文件则使用它所需要的任何编码打开。(它们与您编写代码的源文件的编码无关)。
    1.当您的原始程式档造成这个错误时,最常见的原因是在复制贴上或开启不是以UTF-8编码的原始程式码档之后。(复制粘贴尤其出乎意料,当您从非UTF-8编码的文件中复制时,IDE不会自动将您复制粘贴的内容转换到编辑器中)。这可能会导致上述错误。因此,您应该缩小编码不是UTF-8的源代码文件的范围,并对其进行转换。
    我们无法访问您的项目文件,但我看到的错误消息显示调试器试图打开一个未使用UTF-8编码的用户源代码文件,这与IDE配置和模块编码相反。
    文件“D:\程序文件\JetBrains\PyCharm社区版2020.3.3\插件\python-ce\助手\pydev_pydevd_bundle\pydevd_comm.py”
nxagd54h

nxagd54h2#

我也遇到过同样的问题,最后在修改了我的解释器设置中使用的python可执行文件的大小写之后,我终于解决了这个问题。长话短说,有时PyCharm会尝试使用Python(大写的“P”)而不是python来执行venv目录中的符号链接。修改后,我可以再次调试。

pkbketx9

pkbketx93#

看看Stefan Ukena在这个帖子上的回答:
https://youtrack.jetbrains.com/issue/PY-14497#focus=Comments-27-5243196.0-0
在链接失效时引用:
您可能需要在Pycharm〉设置中更改Python解释器。(使用pipenv),它指向/Library/.../bin/Python,并带有大写字母P。打开文件夹并检查,我发现这个文件或者符号链接实际上是python加上一个小写的p。在Pycharm设置中把它从.../Python改为.../python解决了这个问题。(我不得不在之后重新启动Pycharm。)
它也对我有帮助,但只是当我切换到pipenv而不是通常的venv时。我将Python更改为python,调试器工作正常,但我仍然收到错误/警告:

OSError: [Errno 9] Bad file descriptor

但是它还是工作了。没有调试器,它就像预期的那样工作,没有上面的错误。

rlcwz9us

rlcwz9us4#

My Answer
嗨,我已经解决了这个问题,我遵循了这个blog,但在我的情况下,它一直是python(小写),所以我尝试改变
来自:{您的项目路径}/venv/bin/python
至:{您的项目路径}/venv/bin/python3.8
我不知道为什么,但我觉得很管用.

brccelvz

brccelvz5#

加上“忽略”,成功了。

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

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

相关问题