我一直在用 C++ 编写一个新的命令行应用程序。我们支持的一个平台当然是 Windows。
默认情况下,Windows 控制台根据区域设置使用 OEM 代码页(例如,在我的机器上它是 CP437 / DOS.Western)。我想,如果它是 Windows Cyrillic 版本,它会是 CP866,等等。这些 OEM 代码页仅包含 256 个字符)
我认为这意味着 Windows 控制台根据默认代码页将输入的击键转换为字符。(并且,根据当前选择的字体,如果有对应的字形,就会显示出来)。
- 在这种情况下,在我的应用程序中使用 wmain/wchar_t 和宽字符类型是否有意义?
- 使用宽类型有什么好处吗?或者如果只使用 char * 会有什么严重的问题吗?
- 当使用宽字符类型时,命令行参数和环境字符串的编码是什么 - (wchar_t * argv[] 和 wchar_t * envp[]),我的意思是。它们是由 Windows CRT 转换为 UTF-16,还是原封不动?
感谢您的贡献。