如何为非控制台类非Unicode应用指定特定代码页(ISO 8859-15/28605)
如何为非控制台类非Unicode应用指定特定代码页(ISO 8859-15/28605)
我之前也碰到过和你一模一样的头疼问题——要给非控制台的非Unicode应用指定ISO 8859-15(代码页28605),但系统区域设置里根本找不到对应这个代码页的语言,用chcp命令又只对控制台程序有用,折腾了好一阵才摸出可行的方案,下面给你详细说:
方法一:全局修改系统ANSI代码页(最直接的全局生效方案)
非Unicode应用默认会使用系统的ANSI代码页(ACP),所以直接修改这个全局设置就能让所有这类应用都用28605代码页,步骤很简单:
- 首先得以管理员身份打开命令提示符或者Windows Terminal(不然没权限改注册表)
- 复制粘贴下面两条命令执行,直接修改系统注册表的代码页配置:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP /t REG_SZ /d 28605 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v OEMCP /t REG_SZ /d 28605 /f - 执行完别忘重启电脑,不然修改不会生效
- 👉 重要提醒:这个修改是全局的,会影响所有依赖系统ANSI代码页的非Unicode应用。如果之后有其他应用出现乱码问题,只需要把命令里的
28605改回你原来的代码页(比如大部分西欧语言默认的1252),重启后就能恢复。操作前建议右键导出HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage这个注册表项做备份,以防万一。
方法二:单个应用专属设置(不影响全局)
如果你不想改全局设置,只想让目标应用单独用28605代码页,可以试试这个快捷方式启动的技巧:
- 右键桌面空白处,新建一个「快捷方式」
- 在「请输入对象的位置」里填写:
记得把rundll32.exe apphelp.dll,ShimLayerLoaderForDoubleByteCodePage 28605 "C:\Full\Path\To\Your\Application.exe"C:\Full\Path\To\Your\Application.exe替换成你要启动的应用的实际完整路径 - 点击「下一步」给快捷方式起个名字,比如「我的应用(ISO-8859-15)」
- 之后每次通过这个快捷方式启动应用,它就会以28605代码页运行,完全不会影响其他程序
- 小提示:如果这个方法没生效,可能是你的应用不兼容这个shim层,那就只能回到第一种全局修改的方案了
备注:内容来源于stack exchange,提问作者Fabo.sk
相关产品推荐
相关产品推荐

