必须将非unicode程序的默认ansi代码页设为936(gbk)才能修复win11中文乱码。通过控制面板→区域→管理→更改系统区域设置→选“中文(简体,中国)”并取消勾选utf-8 beta选项,重启生效;若失效则手动修改注册表hkey_local_machinesystemcurrentcontrolsetcontrol lscodepage下的acp和oemcp值为936后重启;或创建快捷方式注入chcp 936命令临时启用gbk环境。

Win11系统界面、控制面板、命令行或老旧软件中中文显示为问号、方块或日文字符,本质是系统把中文字符按错误编码解析了——它正在用UTF-8或英文代码页强行读取本该走GBK(代码页936)的中文资源,必须将非Unicode程序的默认ANSI代码页强制设为936才能还原正常显示。
用控制面板重置系统区域并锁定GBK代码页
这一步直接写入系统级ANSI代码页参数,所有依赖传统Windows API的程序(包括控制面板、记事本、CMD、VB6/DELPHI软件)都会立即认出中文。跳过它,后续任何操作都只是临时补救。
按Win + R输入control回车,打开控制面板。
右上角“查看方式”设为“类别”,点击“时钟和区域”→“区域”。
切换到“管理”选项卡,点击“更改系统区域设置…”。
在下拉列表中选择【中文(简体,中国)】,【务必取消勾选“Beta版:使用Unicode UTF-8提供全球语言支持”】——该选项会覆盖ACP为65001,导致所有非Unicode程序丢弃GBK映射,问号乱码就是它干的。
勾选“当前用户也使用此系统区域设置”,点击“确定”,弹出提示时选择“立即重新启动”。
注册表直写ACP/OEMCP为936(控制面板失效时备用)
当“更改系统区域设置”按钮灰显、控制面板打不开,或重启后仍乱码,说明系统底层代码页注册表项被锁死或写错,需手动修正。
方法一:直接修改关键值
按Win + R输入regedit回车,打开注册表编辑器。
导航至:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage。
双击右侧的ACP,将“数值数据”改为【936】;再双击OEMCP,同样改为【936】。
关闭注册表编辑器,重启电脑——这次重启不可跳过,内核层代码页只在启动时加载一次。
方法二:批量部署或脚本化(管理员权限运行)
新建一个文本文件,粘贴以下内容,保存为fix_936.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"ACP"="936"
"OEMCP"="936"
双击运行该.reg文件,确认导入,然后重启。
临时注入chcp 936让单个程序立刻生效
不想改系统全局设置,或需要同时运行GBK和UTF-8环境的老软件,就给目标程序单独加一行代码页指令。
第一步:右键桌面 → 新建 → 快捷方式。
第二步:在“请键入对象的位置”框中输入:
cmd /c chcp 936 >nul & start "" "C:Program FilesYourApppp.exe"
第三步:把引号里的路径替换成你那个乱码软件的真实安装路径,点击“下一步”,命名后完成创建。
以后双击这个快捷方式启动软件,它就会在GBK环境下运行,问号立刻变中文。注意:【如果软件本身是64位而系统是32位cmd环境,可能不生效,此时需改用%SystemRoot%Sysnativecmd.exe路径】。











