Python 运行时报错:UnicodeEncodeError: 'gbk' codec can't encode character 解决方案
问题背景
在 Windows 系统下开发 Python 程序时,经常遇到控制台输出中文或特殊字符时报错的情况。典型的错误信息如下:
UnicodeEncodeError: 'gbk' codec can't encode character '\u0467' in position 0: illegal multibyte sequence
这通常意味着 Python 解释器默认使用的编码格式(通常是 GBK)无法表示当前字符串中的某些字符。
原因分析
Windows 的命令提示符(cmd)默认编码是 GBK,而 Python 3 内部使用 UTF-8。当两者不匹配且涉及特殊字符(如希腊字母、Emoji 或非标准汉字)时,就会抛出此异常。特别是处理文件路径、日志打印或第三方库返回的文本数据时,很容易踩到这个坑。
解决方案
方法一:临时修改环境变量
在运行脚本前,设置环境变量强制使用 UTF-8。这种方式适合临时调试。
set PYTHONIOENCODING=utf-8
python your_script.py
方法二:代码层面修复
在脚本开头添加以下代码,强制重定向标准输出和输入的编码。这样无需修改启动命令,适合打包分发的场景。
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
方法三:切换命令行编码
直接在 cmd 中执行命令切换为 UTF-8 模式,然后运行脚本。
chcp 65001
python your_script.py
总结
遇到此类问题不必惊慌,根据实际场景选择上述任一方案即可。如果是长期项目,建议统一配置环境变量的方式更为稳妥,避免每次手动输入命令。


