Unicode Windows控制台应用程序(wxdev - c++ /minGW 4.6.1)

Unicode Windows console application (WxDev-C++/minGW 4.6.1)

本文关键字:minGW c++ 控制台 Windows 应用程序 wxdev Unicode      更新时间:2023-10-16

我想做一个简单的多语言Windows控制台应用程序,只是为了教育目的。我正在使用c++语言和wxdev - c++/minGW 4.6.1,我知道这类问题被问了无数次。我可能搜遍了整个互联网,看过了所有的论坛,但都没有什么真正的帮助。

下面是工作代码示例:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    /* English version of Hello world */
    wchar_t EN_helloWorld[] = L"Hello world!";
    wcout << EN_helloWorld << endl;
    cout << "nPress the enter key to continue...";
    cin.get();
    return 0;
}

它工作得很好,直到我尝试放入一些非常宽的字符,如"Ahoj sv !"。问题是在十六进制unicode中的'011B'中。编译器给了我这个错误:"非法字节序列。"

不工作代码:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    /* Czech version of Hello world */
    wchar_t CS_helloWorld[] = L"Ahoj světe!"; /* error: Illegal byte sequence */
    wcout << CS_helloWorld << endl;
    cout << "nPress the enter key to continue...";
    cin.get();
    return 0;
}

我听说过#define UNICODE/_UNICODE, -municode或下载旧minGW的包装器。我试过了,但没有用。可能是我不知道如何正确使用它们。不管怎样,我需要一些帮助。在Visual studio中,这是一个简单的任务。

非常感谢您的回复。

显然,使用UTF-16的标准输出流在MinGW中不起作用。

我发现我可以使用Windows API,或者使用UTF-8。查看代码示例的另一个答案

这是一个答案,不确定这是否适用于minGW。

这里也有一些minGW特有的细节