我的 Windows cmd CodePage 现在低于 65001。因为我正在做一些 Android 的东西并且需要使用控制台日志,但现在忘记了如何更改它。
使用 chcp 437 将 CodePage 改回时,它可以工作。但是如果我启动一个新的 cmd 窗口,它就会返回。
如何做 chcp 事情以使其永久化?
在这里我找到了一个更好的解决方案:
- 开始 -> 运行 -> 注册表编辑器
- 转到 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]
- 添加名为:自动运行的新字符串值
- 将值更改为“chcp 437”
在 Windows 10 的 1809 版本中,我设法通过转到系统的Language settings
、选择Administrative language settings
、单击Change system locale...
并选中该Beta: Use Unicode UTF-8 for worldwide language support
框,然后重新启动我的电脑来永久解决此问题。
这样,它适用于所有应用程序,即使是那些我不是从命令提示符启动的应用程序!(这对我来说是必要的,因为我试图从 Atom 编辑 Agda 代码。)
创建一个包含所有您想要的命令的启动批处理文件。
然后编辑注册表以指向您的启动文件。
http://technet.microsoft.com/en-us/library/cc779439%28WS.10%29.aspx
c:\startup.cmd
@echo off
chcp 437
HKLM\SOFTWARE\Microsoft\Command Processor
AUTORUN="C:\startup.cmd"
如果您只是在 cmd 中使用 chcp 850 来更改活动语言代码(850 = 多语言(拉丁语 I)),命令提示符代码页总是会更改回默认的 437。尽管我是巴西人(语言代码 850),但我的系统默认语言设置为英语 (437)。一旦我需要显示一些特殊字符,如 ã、õ、ç,我发现在 Windows 10 中,在所有设置 > 时间和语言 > 区域和语言下(右上角)有一个相关设置的链接 - 附加日期、时间和区域设置。从那里您将被重定向到Control Panel\Clock、Language 和 Region。再次单击Region > Change Location并在窗口 Region 中的选项卡 Administrative中,更改通过单击按钮更改系统区域设置并选择使用您需要的代码的其他语言(在我的情况下,葡萄牙语(巴西)= 代码 850 ),用于非 Unicode 程序的语言。重新启动Windows 并检查您的命令提示符现在是否设置为新的语言代码(在 cmd 中键入 chcp)。对我来说,它解决了问题。列表中还有一个拉丁语(单词)选项,我想它也是代码 850。
可以使用以下命令巧妙地设置默认 CMD/shell 代码页:
REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 437
这将使代码页 437 成为您的默认值,但仅在 cmd/shell 中,这意味着操作系统的其余部分是安全的,并且引导环境未受影响。cmd 不会在每次打开 cmd 时始终更改代码页,而是从开始时在指定的代码页中打开。
如果您希望使用 regedit.exe 手动编辑它,请注意您必须将代码页值设置为“十进制”(使用单选按钮选择十进制或十六进制输入)。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
您可以通过在以上 reg 键值的窗口中编辑 OEMCP 键值来永久编辑代码页值
警告:不要这样做,它会使您的系统无法启动。见相关。