windows 10中cmd和powershell中文乱码的根本原因是控制台默认gbk编码与程序utf-8输出不匹配;需分别通过注册表autorun设chcp 65001和powershell配置文件设置[system.console]::outputencoding为65001编码。

在Windows 10中运行Python脚本或执行含中文的批处理时,CMD窗口显示“浣犲ソ”、PowerShell输出方块或问号,根本原因是控制台默认使用GBK(代码页936)而程序按UTF-8输出——必须让系统级终端从启动那一刻起就用65001编码,否则每次手动敲chcp 65001治标不治本。
CMD默认编码永久设为UTF-8
第一步:按 Win + R 打开运行框,输入 regedit 回车,以管理员身份运行注册表编辑器。
第二步:导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
第三步:在右侧空白处右键 → 新建 → 字符串值,命名为 Autorun。
第四步:双击 Autorun,将其数值数据设为 chcp 65001,点击确定保存。
这一步必须写对大小写和空格——chcp 65001 中间有空格,不能写成 chcp65001 或 CHCP 65001,否则CMD启动时会报错并跳过执行。
PowerShell默认编码永久生效
PowerShell不读取CMD那套注册表,它靠启动时自动加载的配置脚本(PROFILE)来设置编码。但这个文件默认不存在,必须手动创建并注入关键语句。
方法一:用PowerShell自身命令生成配置文件
以管理员身份打开PowerShell,逐行执行:
New-Item $PROFILE -ItemType File -Force
notepad $PROFILE
在记事本中,将以下这一行粘贴到文件最顶部(不要空行,不要缩进):
[System.Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(65001)
保存并关闭记事本。
方法二:绕过执行策略限制(若提示“无法加载文件,因为在此系统上禁止运行脚本”)
在同一个管理员PowerShell窗口中,先运行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
这条命令只影响当前用户,不会降低系统安全性,不必选Unrestricted——RemoteSigned已足够让本地脚本运行。
验证是否真正生效
关闭所有已打开的CMD和PowerShell窗口,重新打开两个全新窗口。
在CMD中输入:chcp → 回车,应直接显示“活动代码页:65001”。
在PowerShell中输入:[Console]::OutputEncoding.WebName → 回车,应返回 utf-8。
此时再运行含中文print语句的Python脚本,或执行 echo 你好世界,字符将完整清晰显示,无截断、无方块、无乱码。











