Python中VSC写代码出现编码问题如何解决

用 coderunner 插件运行 Python 文件

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 报错提示这个

问题是我已经在文件最上面加了

-- coding: utf-8 --

而且 vsc 的设置里 files.encoding": "utf8", 也设置好了

这是为什么呢?


Python中VSC写代码出现编码问题如何解决

7 回复

你好,我是插件作者。你 py 文件内容是啥,里面有中文?可以试试这里面的三种解决方案: https://github.com/formulahendry/vscode-code-runner/issues/25


在VSCode里遇到编码问题,通常是因为文件编码、终端编码或代码中字符串处理不一致导致的。直接上解决方案:

1. 设置文件编码 在VSCode右下角状态栏点击编码(如UTF-8),选择“通过编码保存”,然后选“UTF-8 with BOM”或“UTF-8”。或者在settings.json里加:

{
    "files.encoding": "utf8",
    "files.autoGuessEncoding": true
}

2. Python文件头加编码声明 在.py文件开头加:

# -*- coding: utf-8 -*-

3. 处理读写文件编码 读写文件时明确指定编码:

with open('file.txt', 'r', encoding='utf-8') as f:
    content = f.read()
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(content)

4. 配置终端编码 在VSCode的settings.json里设置终端编码:

{
    "terminal.integrated.defaultProfile.windows": "Command Prompt",
    "terminal.integrated.env.windows": {
        "PYTHONIOENCODING": "utf-8"
    }
}

5. 处理中文字符串 代码里用u前缀定义Unicode字符串:

text = u"中文内容"
print(text.encode('utf-8').decode('utf-8'))

6. 检查Python环境 在代码里打印当前编码确认:

import sys
print(sys.getdefaultencoding())
print(sys.stdout.encoding)

一般按这个顺序排查:先确保文件保存为UTF-8,然后检查读写文件时是否指定编码,最后确认终端环境。多数情况下问题出在文件编码没统一。

总结建议:统一用UTF-8编码并显式声明。

好啦好啦!!谢谢谢谢!!!!顺便一提 你的插件好棒的!

😀

Import Io
Io.set …………
原谅我不会手机打代码

全球第一工单论坛 😂

···
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=‘utf8’)
···

回到顶部