使用MinGW的c ++ unicode程序中的错误

时间:2016-03-21 08:00:04

标签: c++ unicode mingw

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

int main()
{
    wstring str = L"こんにちは";
    wcout<<str<<endl;
    system("pause");
}

我正在尝试从c ++程序打印japanese(hello)但收到错误。我使用UNICODE编码将此程序保存在记事本中,然后使用MinGW 4.7.2进行编译 以下错误:

E:\GCC test>g++ -c unicode.cpp
unicode.cpp:1:1: error: stray '\377' in program
unicode.cpp:1:1: error: stray '\376' in program
unicode.cpp:1:1: error: stray '#' in program
unicode.cpp:3:4: error: invalid preprocessing directive #i
unicode.cpp:5:4: error: invalid preprocessing directive #i
unicode.cpp:1:5: error: 'i' does not name a type
unicode.cpp:11:2: error: 'i' does not name a type

1 个答案:

答案 0 :(得分:1)

错误看起来你有一个UTF-16LE的文件BOM B yte O rder M < / strong> ark),编译器不喜欢这样。

\377\376 = 0xfffe = UTF-16LE BOM

尝试删除BOM,和/或尝试不同的编码。 UTF-8是一种优秀的编码,不需要BOM,大多数编译器和许多其他工具都能理解。

至于Unicode,它不是二进制字符编码。然而,有一些编码与'Unicode'相关联。 UTF-8和UTF-16可能是最常见的此类编码。

如果编辑器提供以“Unicode编码”保存文件,请尝试远离该编辑器。如果该编辑器是记事本,那么有更多理由远离它。给自己一个合适的编程编辑器,一个理解编码和EOL,并具有语法亮点等的编辑器。