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

以前有人问过几乎相同的问题。 在回复中给出了对代码页的一个很好的解释,但是它并没有回答我脑海中的问题:什么控制了cmd.exe启动时使用的代码页? 在我的系统上,它以某种方式被改变。 在registry项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? 它是如何从registry中的值改变的? 如何防止它被更改和/或将其更改回到新的命令窗口?

Solutions Collecting From Web of "cmd.exe启动时使用的编码/代码页是什么?"

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

 HKEY_CURRENT_USER\Software\Microsoft\Command Processor 

 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor 

在Windows注册表中, 如此 MS Windows server 2003支持页面上所述。 它描述了如何在一个或两个这些键下添加名为AutoRunREG_SZ字符串条目,其值包含您希望在cmd.exe启动时自动运行的命令。

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

尽管MS文章只是指出它适用于Windows server 2003,但是该技术也适用于我测试过的Win XP系统,所以也可能与Vista和Win 7一起使用。

如果Win + R和运行cmd.exe /D修复它,那么问题是在CMD 自动运行值…