C ++输出日文字符

时间:2015-05-17 21:47:03

标签: c++ memory unicode widechar readprocessmemory

我正在读取日本游戏中的字符串,我试图在控制台窗口中显示它并将字符串复制到剪贴板。到目前为止,我已经设法在控制台中显示它,但每当我尝试将其复制到剪贴板时,字符串就会失真。我试图搜索问题,但主要是那些在控制台中显示字符串的人,我没有遇到任何问题。

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

日语文本在 cout 之后正确显示在控制台中,但是存储的剪贴板值类似于: y•zuƒXƒ~。我不知道为什么它在我输出到控制台时工作正常,因为从内存中读取的字符串也会像在剪贴板中一样失真。这是剪贴板功能,如果它会有所帮助:

{{1}}

我也尝试使用 wchar_t wstring 来处理字符串,但我得到的符号与预期完全不同。

如果重要,我的系统区域设置当前设置为日语。

我在这里做错了什么?

0 个答案:

没有答案