【问题标题】:Change default code page for debug console in VS10更改 VS10 中调试控制台的默认代码页
【发布时间】:2011-09-17 10:34:41
【问题描述】:

目前它默认为我的系统区域设置,在我的例子中是 932(日文 Shift-JIS),但我希望它默认为 65001(UTF-8)。

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

有什么建议吗?

【问题讨论】:

  • 嗯,你不应该。控制台模式应用程序的输出可以重定向。无论程序读取输出,都会对 utf-8 编码一无所知。如果控制台应用程序的 8 位代码页要求开始成为问题,那么您需要开始考虑编写原生 Windows 程序。
  • Windows 控制台不适用于 utf-8。甚至 SetConsoleOutputCP 也无济于事。

标签: c++ visual-studio-2010 utf-8 codepages


【解决方案1】:

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

&lt;encoded_path_to_executable&gt;\ 替换为_ 的字符串。 例如:Z:\prj\prj_name\out\debug\bin\program.exe 转换为 Z:_prj_prj_name_out_debug_bin_program.exe

"CodePage"=dword:000004e3 设置所需的代码页。选择合适的字体很重要。

由于调试模式,在程序控制台的窗口标题上调用的标准设置对话框无法正常运行。但是,您可以通过以Win+R 快捷方式开头的Windows cmd 获得所需的设置。它们出现在文件夹 %SystemRoot%_system32_cmd.exe 或类似文件夹下。

因此,您可以在可执行文件的调试控制台中准确获得所需的代码页,而无需在运行时有条件地设置代码页。 65001代码页的支持可以通过HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage中的key来判断:如果65001的key有合适的*.nls文件,则支持该页面。

【讨论】:

    猜你喜欢
    • 2019-03-04
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多