返回博客
2026年8月18日1 阅读2 分钟阅读开发者
Windows终端编码默认GBK改为UTF-8
Windows 终端(GBK/本地编码)改为 UTF-8 有几种方式,按作用范围从临时到永久排列: ## 1. 临时(仅当前命令行会话) 在 PowerShell 里执行: ```powershe...
Windows 终端(GBK/本地编码)改为 UTF-8 有几种方式,按作用范围从临时到永久排列:
1. 临时(仅当前命令行会话)
在 PowerShell 里执行:
chcp 65001
65001 就是 UTF-8 代码页。仅对当前窗口生效,关掉就恢复。
2. 永久(系统/用户级,推荐)
方式 A:Windows 设置(最稳妥)
- 设置 → 时间和语言 → 语言和区域 → 管理语言设置
- 点「更改系统区域设置」→ 勾选 「Beta: 使用 Unicode UTF-8 提供全球语言支持」
- 重启电脑生效。
这是 Windows 10/11 官方提供的全局 UTF-8 开关,启用后所有传统控制台默认就是 UTF-8。注意:极少数老旧的 GBK 专用程序可能显示异常。
方式 B:PowerShell 配置文件(只对 PowerShell 生效,不动系统)
在 PowerShell 里:
# 创建/编辑配置文件
if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -Type File -Force }
notepad $PROFILE
在打开的文件里加一行:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001 | Out-Null
保存后,每次开 PowerShell 自动切 UTF-8。
方式 C:仅改注册表(仅 cmd 的默认代码页)
reg add "HKCU\Console" /v CodePage /t REG_DWORD /d 65001 /f
3. Windows Terminal(如果你用它)
Windows Terminal 默认就是 UTF-8,不需要改。如果你在用的是默认的「命令提示符/PowerShell 窗口」而不是 Windows Terminal,建议直接装 Windows Terminal(Microsoft Store 免费),从根源上避免 GBK 问题。
针对你刚才遇到的问题:那个 UnicodeEncodeError: 'gbk' codec can't encode 是因为 Python 的 stdout 走了系统 GBK 编码。除了改终端,也可以在运行 Python 前设环境变量(不改系统):
$env:PYTHONIOENCODING = "utf-8"
这样即使终端还是 GBK,Python 也会按 UTF-8 输出(显示可能仍是乱码,但脚本不会再报错)。