cmd中文乱码因代码页与字符编码不匹配,解决方法有四:一、临时切换用chcp 65001;二、注册表修改hkey_current_user\console\%systemroot%_system32_cmd.exe下codepage为65001实现永久生效;三、属性中更换字体为consolas或cascadia code;四、系统设置启用“beta版:使用unicode utf-8提供全球语言支持”并重启。

电脑命令行CMD输出中文乱码,是因为当前代码页(Code Page)与程序输出的中文编码不匹配,比如Python脚本用UTF-8写入中文,而CMD默认用GBK(代码页936)渲染,就会把“你好”变成“浣犲ソ”或一串问号。
临时修复:当前窗口立刻生效
这一步适合调试单次脚本、快速验证是否是编码问题。
打开CMD,直接输入:chcp 65001 → 按回车。
看到提示“活动代码页: 65001”即表示已切换至UTF-8。立即执行含中文的命令,例如 echo 测试中文 或运行Python脚本,观察是否显示正常。
若仍为乱码,说明问题不在代码页本身,而是字体不支持——必须配合更换TrueType字体才可能生效。
切回GBK只需再输:chcp 936 → 回车。
永久生效:让每个新CMD都默认UTF-8
每次手动敲chcp太麻烦,尤其开发时频繁启新窗口。以下操作将使所有新打开的CMD自动启用UTF-8。
第一步:按 Win + R 输入 regedit 打开注册表编辑器。
第二步:导航到路径:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe。
第三步:在右侧空白处右键 → 新建 → DWORD (32位)值 → 命名为 CodePage。
第四步:双击该值,选择“十进制”,输入 65001 → 确定。
⚠️ 注意:如果该子项不存在(如首次设置),需先手动创建完整路径——Console 下若无 %SystemRoot%_system32_cmd.exe 项,右键 Console → 新建 → 项,名称严格输入 %SystemRoot%_system32_cmd.exe(注意符号和下划线)。
关闭注册表,重启CMD窗口,运行 chcp 验证是否返回65001。
字体补救:没有它,chcp 65001形同虚设
CMD默认的Raster Fonts只认ASCII,遇到UTF-8中文字节直接跳过渲染,结果就是空格、方块或问号——换字体是硬性前提。
方法一:右键CMD标题栏 → 属性 → 切换到“字体”选项卡 → 在列表中选 Consolas 或 Cascadia Code → 确定。
方法二:若Consolas不可选,说明系统未安装——可去微软官网下载Cascadia Code免费字体并安装,重启CMD后它会自动出现在字体列表里。
这一步做完,再配合chcp 65001,中文输出才能真正落地显示。
系统级兜底:启用Windows UTF-8全局支持
某些老旧工具(如旧版MySQL客户端、部分Node.js CLI)会绕过chcp,直接读取系统ANSI代码页。这时需开启Windows底层UTF-8支持。
打开“设置” → 时间和语言 → 区域 → 右侧点“管理” → “更改系统区域设置” → 勾选 “Beta版:使用Unicode UTF-8提供全球语言支持” → 重启电脑。
重启后,所有控制台应用(包括CMD、PowerShell、WSL终端)默认以UTF-8解释字符流,不再依赖chcp临时干预。











