在visual c ++中显示日文字符

时间:2018-05-18 05:33:44

标签: c++ visual-c++ cjk

有没有人知道如何在visual c ++中使用日文字符?

我尝试使用visual c ++在控制台中显示日语名称。

#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

int main()
{
   cout << "北島 美奈" << endl;

   return 0;
}

控制台中的输出:

?? ??
Press any key to continue ...

希望有人可以提供帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

我使用cmd.exe在控制台窗口上使用自己的代码UTF-8和EUC-KR(韩语)进行了测试。

这是我的源代码。

#include <string>
#include <iostream>

#include <windows.h>

int main()
{
    int codepage = CP_ACP; //CP_ACP, CP_OEMCP
    int conv_codepage = CP_UTF8; //CP_UTF8
    char str[256];
    char str1[256];
    wchar_t tstr[256], tstr2[256];

    memset(str, 0x00, 256);
    memset(str1, 0x00, 256);
    memset(tstr, 0x00, 256);
    memset(tstr2, 0x00, 256);

    memcpy(str, " 北島 美奈", sizeof(str));

    int nLen = MultiByteToWideChar(codepage, 0, str, -1, 0, 0); 
    MultiByteToWideChar(codepage, 0, str, -1, tstr, nLen);

    int len = WideCharToMultiByte( conv_codepage, 0, tstr, -1, NULL, 0, 0, 0 ); 
    WideCharToMultiByte(conv_codepage, 0, tstr, -1, str1, len ,0 ,0);

    cout << "2... " << str1 << endl;

    return 0;
}

案例1 UTF-8:控制台上的结果 输出是合理的,因为str1变量是utf-8字符串。 我在utf-8控制台窗口上有一个正确的utf-8。

enter image description here

案例2 EUC-KR:控制台上的结果 我认为这种情况也是可以接受的utf-8字符串,带有utf-8字符串。

enter image description here

然后按如下方式更改代码

cout << "2... " << str << endl;

cout << "2... " << str1 << endl;

案例1 UTF-8:控制台上的结果 我认为这对我来说是一个utf-8控制台上的unicode字符串。

enter image description here

案例1 EUC-KR:控制台上的结果

在euc-kr代码页中,它仍然是正确的unicode字符串。

enter image description here