Отображение японских символов в Visual C ++ - PullRequest
0 голосов
/ 18 мая 2018

Кто-нибудь здесь имеет представление о том, как работать с японским символом в 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 голосов
/ 18 мая 2018

Я протестировал свой собственный код UTF-8 и EUC-KR (корейский) в окне консоли, используя cmd.exe.

Это мой исходный код.

#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;
}

case 1 UTF-8: результат на консоли Вывод является разумным, поскольку переменная str1 является строкой utf-8.У меня правильный utf-8 в окне консоли utf-8.

enter image description here

case 2 EUC-KR: результат на консоли Iдумаю, что в этом случае также допустима строка utf-8 со строкой utf-8.

enter image description here

Затем измените код следующим образом

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

до

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

case 1 UTF-8: результат на консоли Я думаю, что это нормально для строки unicode на консоли utf-8.

enter image description here

case 1 EUC-KR: результат на консоли

Это все еще правильная строка Юникода в кодовой странице euc-kr.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...