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

时间:2014-03-25 20:24:16

标签: c++ windows unicode console mingw

我正在尝试制作简单的多语言Windows控制台应用程序,仅用于教育目的。我正在使用C ++ lahguage和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;
}

它完美无缺,直到我尝试输入一些非常广泛的角色,如“Ahojsvěte!”。 roblem在“ě”中,以十六进制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中,这是一项简单的任务。

非常感谢您的回复。

2 个答案:

答案 0 :(得分:1)

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

我发现我可以使用Windows API,也可以使用UTF-8。 See this other answer代码示例。

答案 1 :(得分:0)

这是answer,不确定这适用于minGW。

还有一些特定于minGW here

的详细信息