Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnicodeDecodeError when changing files with an open project #22546

Open
jhz21cn opened this issue Sep 22, 2024 · 4 comments
Open

UnicodeDecodeError when changing files with an open project #22546

jhz21cn opened this issue Sep 22, 2024 · 4 comments

Comments

@jhz21cn
Copy link

jhz21cn commented Sep 22, 2024

Description

What steps will reproduce the problem?

UnicodeDecodeError
just copy/modify some files in project folder

Traceback

Traceback (most recent call last):
  File "C:\Users\AAA\miniconda3\envs\env_py312\Lib\site-packages\spyder\utils\workers.py", line 150, in _partial
    stdout = handle_qbytearray(raw_stdout, self._get_encoding())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\AAA\miniconda3\envs\env_py312\Lib\site-packages\spyder\utils\workers.py", line 35, in handle_qbytearray
    return to_text_string(obj, encoding=encoding)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\AAA\miniconda3\envs\env_py312\Lib\site-packages\spyder\py3compat.py", line 57, in to_text_string
    return str(obj, encoding)
           ^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 925: illegal multibyte sequence
decoding with 'cp936' codec failed

Versions

  • Spyder version: 6.0.0 (conda)
  • Python version: 3.12.5 64-bit
  • Qt version: 5.15.8
  • PyQt5 version: 5.15.9
  • Operating System: Windows-11-10.0.22631-SP0

Dependencies

# Mandatory:
aiohttp >=3.9.3                  :  3.10.5 (OK)
asyncssh >=2.14.0,<3.0.0         :  2.17.0 (OK)
atomicwrites >=1.2.0             :  1.4.1 (OK)
chardet >=2.0.0                  :  5.2.0 (OK)
cloudpickle >=0.5.0              :  3.0.0 (OK)
cookiecutter >=1.6.0             :  2.6.0 (OK)
diff_match_patch >=20181111      :  20230430 (OK)
github >=2.3.0                   :  2.4.0 (OK)
importlib_metadata >=4.6.0       :  8.5.0 (OK)
intervaltree >=3.0.2             :  3.1.0 (OK)
IPython >=8.13.0,<9.0.0,!=8.17.1 :  8.27.0 (OK)
jedi >=0.17.2,<0.20.0            :  0.19.1 (OK)
jellyfish >=0.7                  :  1.1.0 (OK)
jsonschema >=3.2.0               :  4.23.0 (OK)
keyring >=17.0.0                 :  25.4.0 (OK)
nbconvert >=4.0                  :  7.16.4 (OK)
numpydoc >=0.6.0                 :  1.8.0 (OK)
parso >=0.7.0,<0.9.0             :  0.8.4 (OK)
pexpect >=4.4.0                  :  4.9.0 (OK)
pickleshare >=0.4                :  0.7.5 (OK)
psutil >=5.3                     :  6.0.0 (OK)
pygments >=2.0                   :  2.18.0 (OK)
pylint >=3.1,<4                  :  3.3.0 (OK)
pylint_venv >=3.0.2              :  3.0.3 (OK)
pyls_spyder >=0.4.0              :  0.4.0 (OK)
pylsp >=1.12.0,<1.13.0           :  1.12.0 (OK)
pylsp_black >=2.0.0,<3.0.0       :  2.0.0 (OK)
pyuca >=1.2                      :  1.2 (OK)
qdarkstyle >=3.2.0,<3.3.0        :  3.2.3 (OK)
qstylizer >=0.2.2                :  0.2.3 (OK)
qtawesome >=1.3.1,<1.4.0         :  1.3.1 (OK)
qtconsole >=5.6.0,<5.7.0         :  5.6.0 (OK)
qtpy >=2.4.0                     :  2.4.1 (OK)
rtree >=0.9.7                    :  1.3.0 (OK)
setuptools >=49.6.0              :  74.1.2 (OK)
sphinx >=0.6.6                   :  8.0.2 (OK)
spyder_kernels >=3.0.0,<3.1.0    :  3.0.0 (OK)
superqt >=0.6.2,<1.0.0           :  0.6.7 (OK)
textdistance >=4.2.0             :  4.6.2 (OK)
three_merge >=0.1.1              :  0.1.1 (OK)
watchdog >=0.10.3                :  5.0.2 (OK)
yarl >=1.9.4                     :  1.11.1 (OK)
zmq >=24.0.0                     :  26.2.0 (OK)

# Optional:
cython >=0.21                    :  None (NOK)
matplotlib >=3.0.0               :  None (NOK)
numpy >=1.7                      :  2.1.1 (OK)
pandas >=1.1.1                   :  2.2.3 (OK)
scipy >=0.17.0                   :  None (NOK)
sympy >=0.7.3                    :  None (NOK)
@ccordoba12
Copy link
Member

Hey @jhz21cn, thanks for reporting. I think I understand what's happening but I'd need your help to debug and solve this problem because we don't have access to a Chinese Windows installation.

Do you have time to give me a hand with that?

@jhz21cn
Copy link
Author

jhz21cn commented Sep 24, 2024

ok, what can i do next?

@ccordoba12 ccordoba12 changed the title UnicodeDecodeError UnicodeDecodeError when changing files with an open project Sep 26, 2024
@ccordoba12
Copy link
Member

Thanks for your help @jhz21cn!

Please close Spyder, open this file

C:\Users\AAA\miniconda3\envs\env_py312\Lib\site-packages\spyder\utils\workers.py

in a another text editor (e.g. Notepad++ or VSCode), go to this function:

def _get_encoding(self):
"""Return the encoding/codepage to use."""
enco = 'utf-8'
# Currently only cp1252 is allowed?
if os.name == 'nt':
import ctypes
codepage = to_text_string(ctypes.cdll.kernel32.GetACP())
# import locale
# locale.getpreferredencoding() # Differences?
enco = 'cp' + codepage
return enco

and change line 131 to be

if False:
    import ctypes
    ...

That should fix this problem because I think that if is not necessary anymore.

@ccordoba12 ccordoba12 added this to the v6.0.2 milestone Sep 26, 2024
@jhz21cn
Copy link
Author

jhz21cn commented Sep 28, 2024

tested, fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants