cmd.exe在启动时使用的编码/代码页是什么?

时间:2012-06-17 21:54:26

标签: windows command-line codepages

之前曾问过一个几乎相同的问题。回复中给出了代码页的一个很好的解释,但它没有回答我的想法:什么控制cmd.exe启动时使用的代码页?在我的系统上,它会以某种方式改变。在注册表项HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage中,有一个项目OEMCP设置为437.这似乎是重新启动后cmd.exe使用的CP(如chcp所示),但有些东西后来改变它,它在新的cmd.exe窗口中变成了1252。如果我用chcp将其更改为437,那只会影响当前的cmd.exe。当我退出并重新启动cmd.exe时,chcp在新窗口中显示1252。什么控制cmd.exe启动时使用的默认CP?它是如何从注册表中的值更改的?对于新的命令窗口,如何防止它被更改和/或将其更改回437?

2 个答案:

答案 0 :(得分:4)

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

HKEY_CURRENT_USER\Software\Microsoft\Command Processor

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
Windows注册表中的

,如this MS Windows Server 2003支持页面上所述。它描述了如何在一个或两个密钥下添加一个名为REG_SZ的{​​{1}}字符串条目,其值包含您希望在AutoRun启动时自动运行的命令。

例如,要使代码页1252成为默认值,请在导航到cmd.exe实用程序中的其中一个键之后创建一个名为AutoRun的新字符串值,然后将其值设置为命令{ {1}}之后。

尽管MS文章仅表明它适用于Windows Server 2003,但该技术也适用于我测试过的Win XP系统,因此也可能适用于Vista&赢7。

答案 1 :(得分:1)

如果 Win + R 并且运行cmd.exe /D修复了它,则问题出在cmd autorun值...