C++ 在控制台C+中打印韩文+;

C++ 在控制台C+中打印韩文+;,c++,C++,我在打印韩文方面有困难。 我试过各种方法,但都没有用。 我试过了 一, 四, 还有更多。但所有这些印刷品都是“œœ¸€”。 我使用的是MinGW编译器,我的操作系统是Windows7 奇怪的是,Java打印的是韩文 String kor = "한글"; System.out.println(kor); 工作 在打印文本之前,将控制台代码页设置为utf-8 ::SetConsoleOutputCP(65001) 因为您使用的是Windows 7,所以可以使用WriteConso

我在打印韩文方面有困难。 我试过各种方法,但都没有用。 我试过了

一,

四,

还有更多。但所有这些印刷品都是“œœ¸€”。 我使用的是MinGW编译器,我的操作系统是Windows7

奇怪的是,Java打印的是韩文

    String kor = "한글";
    System.out.println(kor);

工作

在打印文本之前,将控制台代码页设置为utf-8

::SetConsoleOutputCP(65001)

因为您使用的是Windows 7,所以可以使用WriteConsoleW,它是Windows API的一部分<代码>#包括,然后尝试以下代码:

DWORD numCharsToWrite = str.length();
LPDWORD numCharsWritten = NULL;
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str.c_str(), numCharsToWrite, numCharsWritten, NULL);
其中str是std::wstring

有关WriteConsoleW的更多信息:


在尝试了其他方法后,这对我很有效。

控制台可能没有使用正确的。。。我认为“setlocale”将代码页和字符串格式更改为韩语,并带有“korean”(或“ko_KR”)参数。这样做对吗?我还注意到您使用了clang++编译器。也许不同,这是MingGW编译器的问题?这是由于编码的原因。你明白了吗?我很好奇,因为我还试图将复杂的脚本打印到控制台。除非我改变我的系统语言环境或使用包装程序(如允许我指定字体和编码的ConEmu),否则我看不到这样的字符,即使使用Java或C#,前者显然适用于您:-(在cout之前使用它,但“í•œ¸€”输出相同。在打印setmode(_fileno(stdout),_O_U16TEXT)之前尝试此方法;_setmode方法来自visual basic API吗?因为我没有使用visual basic API。
    setlocale(LC_ALL, "korean");
    wprintf("한글");
    String kor = "한글";
    System.out.println(kor);
::SetConsoleOutputCP(65001)
DWORD numCharsToWrite = str.length();
LPDWORD numCharsWritten = NULL;
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str.c_str(), numCharsToWrite, numCharsWritten, NULL);