相关疑难解决方法(0)

C++中的Unicode问题,但不是C

我正在尝试在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)

我得到与上面相同的输出(非工作输出). …

c c++ unicode utf-8

12
推荐指数
1
解决办法
1911
查看次数

标签 统计

c ×1

c++ ×1

unicode ×1

utf-8 ×1