当cmd.exe启动时,它使用哪种编码/代码页?

3
之前已经有类似的问题被提出过。在回答中给出了关于代码页的良好解释,但并没有回答我心中的问题:当启动cmd.exe时,是什么控制了使用的代码页?在我的系统上,它会以某种方式被更改。在注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage中,有一个名为OEMCP的项目,其值设置为437。这似乎是cmd.exe使用的代码页(如chcp所示),在重新启动后,但某些情况下会变成1252。如果我用chcp将其更改为437,则只影响当前的cmd.exe。当我退出并重新启动cmd.exe时,新窗口显示的chcp为1252。是什么控制了启动cmd.exe时默认使用的代码页?它是如何从注册表中的值更改的?我该如何防止其更改和/或将其更改回437以供新的命令窗口使用?
2个回答

4

我在Windows系统中的cmd.exe中默认的代码页是437,这是大多数在美国和西欧销售的个人电脑硬件的默认OEM代码页(据我所知)。您可以通过在以下一个或两个键下添加名为AutoRun的字符串条目来更改此默认设置:

HKEY_CURRENT_USER\Software\Microsoft\Command Processor

并且

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

在Windows注册表中,如此Microsoft Windows Server 2003支持页面所述(此处)。它描述了如何在这些键下添加名为AutoRunREG_SZ字符串条目,并包含您希望在cmd.exe启动时自动运行的命令值。
例如,要使代码页1252成为默认设置,请在导航到其中一个键后创建名为AutoRun的新字符串值,并将其值设置为chcp 1252命令。
尽管MS文章仅指明适用于Windows Server 2003,但该技术也适用于我测试过的Win XP系统,因此可能也适用于Vista和Win 7。

2
437确实是大多数Windows命令环境的默认值。我想知道是什么重置了OP的值? - Mark Ransom
相关问题将Windows控制台的默认代码页更改为UTF-8也可能会引起兴趣。 - martineau

1
如果按下 Win+R 并运行 cmd.exe /D 可以解决问题,那么问题就在于 cmd 的 autorun 值...

@user1462402:Win+R 意味着按住 Windows 键并按下 R 键。换句话说,Anders 建议您使用“开始”菜单的运行框打开 cmd.exe /D - Bavi_H
就我个人而言,在我的键盘上,Windows键上有一个填充的Windows标志轮廓(并没有写“Win”或其他任何东西)。 - martineau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接