我正在尝试制作简单的多语言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中,这是一项简单的任务。
非常感谢您的回复。
答案 0 :(得分:1)
显然,使用UTF-16的标准输出流在MinGW中不起作用。
我发现我可以使用Windows API,也可以使用UTF-8。 See this other answer代码示例。
答案 1 :(得分:0)