Visual Studio 2022运行含特殊字符的Python代码报错如何解决
问题原因
该错误是Python源文件保存编码与Python 3默认的源文件读取编码(UTF-8)不匹配导致的。
从错误信息中的乱码片段V�etko dobr� +��蝞以及报错提示'utf-8' codec can't decode byte 0x9a in position 1: invalid start byte可以确认:Visual Studio 2022将你的代码文件保存为了Windows本地ANSI编码(对应你所在区域的系统代码页,比如中欧地区默认是Windows-1250),Python按照默认规则用UTF-8解析文件时,遇到不符合UTF-8规则的字节序列,直接抛出语法错误。该问题和代码逻辑本身无关,哪怕是单条print语句只要包含非ASCII字符就会触发。
修复方案
按优先级推荐以下解决方法:
方案1:修复当前出错文件的编码(最快解决当前问题)
- 打开报错的.py文件,点击顶部菜单栏「文件」→ 选择「将[你的文件名]另存为」
- 在弹出的保存窗口中,点击「保存」按钮右侧的下拉小箭头,选择「高级保存选项」
- 在编码下拉菜单中选择 Unicode (UTF-8 带签名) - 代码页 65001,注意不要选成UTF-16编码,Python默认无法识别UTF-16格式的源文件,会触发其他报错。点击确认后覆盖保存原文件
- 重新运行代码即可正常执行,特殊字符不会再触发解码错误
方案2:修改VS2022默认编码,一劳永逸避免同类问题
- 点击顶部菜单栏「工具」→「选项」
- 在弹出的设置窗口左侧展开「环境」分类,选择「文档」
- 勾选选项「当数据无法在代码页中保存时,将文档保存为Unicode」,点击确定后重启Visual Studio 2022
- 后续新建、编辑的所有Python文件都会默认以UTF-8编码保存,不管写入什么语言的特殊字符都不会再触发这类编码报错
方案3:临时兼容方案(不推荐长期使用)
如果你暂时不想调整文件保存编码,可以在Python文件的最顶部第一行添加编码声明,指定和你本地系统匹配的代码页,比如中欧Windows系统默认的cp1250编码:
# -*- coding: cp1250 -*- print("Všetko dobré ľščťž")
注意:该方案仅能在你本地当前系统环境下生效,如果把代码拷贝到其他地区、其他编码设置的设备上运行,依然会出现同样的解码错误,属于临时兼容手段,优先使用前两种方案将文件统一保存为UTF-8才是Python开发的标准实践。
内容的提问来源于stack exchange,提问作者SomeGuy
相关产品推荐
相关产品推荐

