我如何在C ++中处理日文字符?

时间:2011-12-17 19:12:12

标签: c++ locale wstring

我正在尝试做一些简单的事情:

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

int main()
{
    wstring nihongo = L"みんなのにほんご";
    wcout << nihongo << endl;
    return 0;
}

但我收到以下错误:

C:\Users\Leonne\Leomedia\MetaDatterTest.cpp|7|error: stray '\201' in program|

C:\Users\Leonne\Leomedia\MetaDatterTest.cpp|7|error: stray '@' in program|

C:\Users\Leonne\Leomedia\MetaDatterTest.cpp||In function 'int main()':|

C:\Users\Leonne\Leomedia\MetaDatterTest.cpp|7|error: converting to execution character set: Illegal byte sequence|

||=== Build finished: 3 errors, 0 warnings ===|

我在Windows机器中,我正在尝试创建一个尽可能便携的库,它必须能够处理任何类型的字符:俄语,日语,ASCII,一切。

2 个答案:

答案 0 :(得分:3)

Visual Studio支持unicode源文件。确保将cpp文件保存为带有BOM的utf16或utf8格式的文件。一旦采用该格式,您的文件就可以正常编译。

答案 1 :(得分:1)

检查这个问题的第一个答案:

std::wstring VS std::string

我对此的回答:

Handling UTF-8 in C++

我相信你会找到你问题的答案。字符编码的麻烦有点令人困惑,没有简单的答案......