即使我使用SetConsoleOutput(1252),我也似乎无法将特定字符打印到控制台(Win32控制台应用程序)。我也尝试过更改'locale'以及更改控制台字体。
例如,我想打印'ã',它应该是代码页1252上的字符227,但控制台应用程序只输出一个简单的'a'。
有许多其他角色似乎与我对Windows-1252的预期不同 - 例如,Ò,Ó,Ô和Õ(#210-213)都是普通的O. / p>
以下是代码段:
int main()
{
locale::global(locale(""));
SetConsoleOutputCP(1252);
for (int i = 1; i < 255; i++) {
std::cout << " " << i << ":" << (unsigned char)i;
if (i % 10 == 0) cout << std::endl;
}
}
这是输出(光栅字体):
编辑:根据Igor的建议,我在使用Lucida Console和Consolas字体时也会添加结果。不幸的是,它没有解决问题。
在所有三种字体中,字符227仍然是'a'而不是'ã'。
Lucida Console字体:
Consolas字体: