目前它默认为我的系统语言环境,在我的情况下是 932(日语 Shift-JIS),但我希望它默认为 65001(UTF-8)。
我可以通过在代码中的某处插入 SetConsoleOutputCP 行然后将其删除来更改给定程序的默认值,但是对每个程序都这样做非常烦人。
有什么建议么?
目前它默认为我的系统语言环境,在我的情况下是 932(日语 Shift-JIS),但我希望它默认为 65001(UTF-8)。
我可以通过在代码中的某处插入 SetConsoleOutputCP 行然后将其删除来更改给定程序的默认值,但是对每个程序都这样做非常烦人。
有什么建议么?
这可以通过标准方法来完成:通过为正在调试的可执行文件编写注册表设置。我的模板dbg_console.reg
:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\<encoded_path_to_executable>]
"ScreenBufferSize"=dword:1388012c
"WindowSize"=dword:00340096
"FontSize"=dword:00100000
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"="Lucida Console"
"HistoryNoDup"=dword:00000000
"QuickEdit"=dword:00000001
"CodePage"=dword:000004e3
<encoded_path_to_executable>
\
是替换为 的字符串_
。例如:Z:\prj\prj_name\out\debug\bin\program.exe
转换为Z:_prj_prj_name_out_debug_bin_program.exe
.
"CodePage"=dword:000004e3
设置所需的代码页。选择合适的字体很重要。
由于调试模式,在程序控制台的窗口标题上调用的标准设置对话框无法正常运行。但是,您可以通过快捷方式Windows cmd
开始获得所需的设置。Win+R
它们出现在文件夹%SystemRoot%_system32_cmd.exe
或类似文件夹下。
因此,您可以在可执行文件的调试控制台中准确获得所需的代码页,而无需在运行时有条件地设置代码页。65001 代码页的支持可以通过 中的键来确定HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
:如果有65001
相应*.nls
文件的键,则支持该页。