Windows 上 UnicodeEncodeError (gbk code) 编码异常解决
现象
在 Windows 上运行 AutoGLM(或任何涉及中文输出的 Python 脚本)时,终端报类似错误:
UnicodeEncodeError: 'gbk' codec can't encode character '\u4f60' in position X
或者更短的:
'gbk' codec can't encode character
原因
Windows 的命令行(cmd 和 PowerShell)默认使用 GBK 编码,而 Python 3 默认在标准输出用 UTF-8 编码。当脚本输出的中文字符无法映射到 GBK 编码时就报错了。
AutoGLM 框架在 verbose 模式下会输出大量中文(思考链、执行动作 JSON 里可能包含中文 App 名),所以这个问题在 AutoGLM 上特别常见。
解决办法
一行环境变量,把 Python 的 IO 编码强制设为 UTF-8:
PowerShell(推荐):
$env:PYTHONIOENCODING = "utf-8"
python main.py --verbose --base-url $MODEL_URL "打开美团"
cmd(命令提示符):
set PYTHONIOENCODING=utf-8
python main.py --verbose --base-url $MODEL_URL "打开美团"
永久生效:
- PowerShell:把
$env:PYTHONIOENCODING = "utf-8"加到 PowerShell Profile($PROFILE) - cmd:设置系统环境变量 PYTHONIOENCODING = utf-8(系统属性 → 高级 → 环境变量 → 新建用户变量)
额外建议
PowerShell 里还可以顺便切换到 UTF-8 代码页:
chcp 65001
让 PowerShell 自身也用 UTF-8 显示中文输出,避免乱码。
完整推荐写法(PowerShell)
$env:PYTHONIOENCODING = "utf-8"
chcp 65001
python main.py --verbose --base-url $MODEL_URL "打开美团搜索附近的火锅店"