память — C ++ Вывод японских символов

Я в памяти читаю строку из японской игры, и я пытаюсь отобразить ее в окне консоли и скопировать строку в буфер обмена. До сих пор мне удавалось отобразить его в консоли, но всякий раз, когда я пытаюсь скопировать его в буфер обмена, строка искажается. Я пытался найти проблему, но в основном люди пытались отобразить строку в консоли, с чем у меня нет проблем.

char StrTxt[500];
// TextAddress: The memory address of the string
ReadProcessMemory(hProcess, (LPCVOID)(TextAddress), &StrTxt, sizeof(StrTxt) / sizeof(*StrTxt), 0);
toClipboard(StrTxt);
cout << StrTxt << endl;

Японский текст правильно отображается в консоли после соиЬ, однако сохраняемое значение буфера обмена выглядит примерно так: у • zuƒXƒ ~. Я понятия не имею, почему он работает нормально, когда я вывожу его на консоль, потому что строка, которая читается из памяти, также искажается так же, как и в буфере обмена. Вот функция буфера обмена, если она будет полезна:

void toClipboard(const string &s) {
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, s.size());
if (!hg) {
CloseClipboard();
return;
}
memcpy(GlobalLock(hg), s.c_str(), s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
}

Я также попытался обработать строку с помощью wchar_t а также wstring, но тогда я получил совершенно другие символы, чем ожидалось.

Мой язык системы в настоящее время установлен на японский, если это имеет значение.

Что я здесь не так делаю?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]