我正在尝试解决有关Unicode在Windows控制台应用程序中的工作方式的所有问题。为什么这个简单的程序不起作用?
#include <iostream>
int wmain(int argc, const wchar_t* const argv[])
{
for (int i = 1; i < argc; ++i)
std::wcout << argv[i] << std::endl;
return 0;
}
编译
>cl /EHsc /D _UNICODE /D UNICODE /Zc:wchar_t test.cpp
程序生成
> test.exe 1 2 3 abc абв
1
2
3
abc
第五个参数在哪里?我必须提到абв
适用于GetACP()
和GetConsoleCP()
&amp; GetConsoleOutputCP()
代码页(1251,866和866)。有趣的是,该程序(在某种程度上)与这些代码页之外的字符一起工作:
> test.exe Sæter
Sцter
可是:
> test.exe абв Sæter