我知道在Cmd.exe
上正确显示本地化字符的简单方法。但是我如何为Powershell.exe
执行相同操作?
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
SetConsoleCP(GetACP());
SetConsoleOutputCP(GetACP());
// valid output in cmd.exe,
// but invalid output in powershell.exe
cout << "Привет мир (1)!" << endl;
// invalid output in both variants: cmd.exe,
// and powershell.exe
wcout << L"Привет мир (2)!" << endl;
return 0;
}
答案 0 :(得分:0)
输出是什么?你的字体是否支持这些字形?
也许以下链接可能有用(关于cmd.exe):
http://www.watchingthenet.com/how-to-add-and-change-fonts-in-windows-command-prompt.html
您还可以尝试将powershell的输出重定向到文件并检查。如果文件正确,则您的控制台字体不支持您的字符。
还有来自ms的博客,展示了如何自定义字体(约ps)
http://blogs.msdn.com/b/powershell/archive/2006/10/16/windows-powershell-font-customization.aspx
答案 1 :(得分:0)
我认为这是在Windows中启用正确的 wcout
处理的快捷方式。尝试将其添加为main
的第一行:
_setmode(_fileno(stdout), _O_U16TEXT);
之后,wcout << L"Привет мир (2)!" << endl;
将像魅力一样独立于用户选择的当前区域设置和单字节编码(因为它应该)。