Windows' cmd.exe '中默认安装的866字符集与出色的Unicode相比差且不方便。
我可以默认安装Unicode或将cmd.exe替换为另一个控制台并使其默认为程序使用它而不是cmd.exe吗?
我理解chcp 65001仅在运行控制台中更改编码。我想在系统级更改字符集
在我尝试了algirdas的解决方案后,我的Windows崩溃了(win7 Pro 64bit),所以我决定尝试一个不同的解决方案:
- Start
Run
(Win+R) -
cmd /K chcp 65001
你会得到你想要的。要从任务栏或其他任何地方启动它,创建一个快捷方式(您可以将其命名为cmd.unicode.exe
或任何您喜欢的名称)并将其Target
更改为C:WindowsSystem32cmd.exe /K chcp 65001
。
打开提升的命令提示符(以管理员身份运行cmd)。向控制台查询注册表中可用的TT字体:
REG query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionConsoleTrueTypeFont"
您将看到如下输出:
0 REG_SZ Lucida Console
00 REG_SZ Consolas
936 REG_SZ *新宋体
932 REG_SZ *MS ゴシック
现在我们需要添加一个TT字体,支持你需要的字符,如Courier New,我们通过在字符串名称上添加零来实现这一点,所以在这种情况下,下一个将是"000":
REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionConsoleTrueTypeFont" /v 000 /t REG_SZ /d "Courier New"
现在我们实现了UTF-8支持:
REG ADD HKCUConsole /v CodePage /t REG_DWORD /d 65001 /f
设置默认字体为"Courier New":
REG ADD HKCUConsole /v FaceName /t REG_SZ /d "Courier New" /f
设置字体大小为20:
REG ADD HKCUConsole /v FontSize /t REG_DWORD /d 20 /f
如果您喜欢,可以启用快速编辑:
REG ADD HKCUConsole /v QuickEdit /t REG_DWORD /d 1 /f
将下列内容保存到一个文件中,文件名称为"。reg"后缀:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9
双击这个文件,regedit会导入它。
它基本上将密钥HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exeCodePage
设置为0xfde9(十进制65001)。
对于我来说,对于Visual Studio 2022,当我执行这个".reg"命令。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsoleC:_Program Files_Microsoft Visual Studio_2022_Professional_Common7_IDE_CommonExtensions_Platform_Debugger_VsDebugConsole.exe]
"CodePage"=dword:0000fde9
这是基于@Shaohua Li的回答:https://stackoverflow.com/a/24711864/2941313。它做同样的事情,但不同的路径(特别是VS2022控制台)。