2

目前它默认为我的系统语言环境,在我的情况下是 932(日语 Shift-JIS),但我希望它默认为 65001(UTF-8)。

我可以通过在代码中的某处插入 SetConsoleOutputCP 行然后将其删除来更改给定程序的默认值,但是对每个程序都这样做非常烦人。

有什么建议么?

4

1 回答 1

0

这可以通过标准方法来完成:通过为正在调试的可执行文件编写注册表设置。我的模板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文件的键,则支持该页。

于 2021-10-02T15:14:23.863 回答