之前曾问过一个几乎相同的问题。回复中给出了代码页的一个很好的解释,但它没有回答我的想法:什么控制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?
答案 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值...