c++ - GetWindowText 无法处理商标符号

标签 c++ windows unicode encoding

HWND ForeWindow = GetForegroundWindow();
wchar_t WindowTxt[1024] = { L'\0' };
GetWindowTextW(ForeWindow, WindowTxt, 1024);
wprintf(L"%s\n", WindowTxt);
std::wstring Str(WindowTxt);
std::wcout << L"Wnd: " << Str << L"\n";

使用上面的代码获取“Skype™”的 Skype 窗口,我得到输出:

"Skype?"

(wcout行执行失败)

1)为什么GetWindowText的宽字符版本无法处理这个字符

2)为什么std::wstring解析wchar_t数组失败然后打印到控制台

最佳答案

CMD 控制台不能很好地处理 Unicode。将输出发送到一个文件并在编辑器中打开它,我想您会得到您期望的实际字符。

关于c++ - GetWindowText 无法处理商标符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527078/

相关文章:

c++ - 如何避免使用 lock_guard 锁定?

c++ - 如何从文本文件中的字符串中提取特定单词? C++

ios - 如何从古吉拉特语(其他语言)的 ios 字符串中获取单个字符

java - JSF标签中的Unicode显示问题

c++ - gtest 如何比较两个数组中的值?

c++ - 为什么一元减去进行整数提升?

python - 如何使 Python 的 winreg 查看注册表中在 Adob​​e CC 程序的注册表编辑器中可见的条目?

windows - 有没有什么好的方法可以绕过运行EXE文件的限制?

windows - 在 Visual Studio 对话框资源脚本中使用#defined 值?

unicode - 未读取 golang unicode/norm 迭代器的最后一个 rune