我正在尝试在Windows上用C++编写unicode字符串到屏幕上.我将控制台字体更改为Lucida Console,并将输出设置为CP_UTF8aka 65001.
我运行以下代码:
#include <stdio.h> //notice this header file..
#include <windows.h>
#include <iostream>
int main()
{
SetConsoleOutputCP(CP_UTF8);
const char text[] = "??????";
printf("%s\n", text);
}
Run Code Online (Sandbox Code Playgroud)
打印出来就好了!
但是,如果我这样做:
#include <cstdio> //the C++ version of the header..
#include <windows.h>
#include <iostream>
int main()
{
SetConsoleOutputCP(CP_UTF8);
const char text[] = "??????";
printf("%s\n", text);
}
Run Code Online (Sandbox Code Playgroud)
它打印: ????????????
我不知道为什么..
另一件事是我做的时候:
#include <windows.h>
#include <iostream>
int main()
{
std::uint32_t oldcodepage = GetConsoleOutputCP();
SetConsoleOutputCP(CP_UTF8);
std::string text = u8"??????";
std::cout<<text<<"\n";
SetConsoleOutputCP(oldcodepage);
}
Run Code Online (Sandbox Code Playgroud)
我得到与上面相同的输出(非工作输出). …