- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 GetAsyncKeyState() 获取输入,然后使用 ToUnicodeEx() 将其转换为 unicode:
wchar_t character[1];
ToUnicodeEx(i, scanCode, keyboardState, character, 1, 0, layout);
我可以像这样使用 wfstream 将其写入文件:
wchar_t buffer[128]; // Will not print unicode without these 2 lines
file.rdbuf()->pubsetbuf(buffer, 128);
file.put(0xFEFF); // BOM needed since it's encoded using UCS-2 LE
file << character[0];
当我在 Notepad++ 中打开此文件时,它是 UCS-2 LE,而我希望它是 UTF-8 格式。我相信 ToUnicodeEx() 以 UCS-2 LE 格式返回它,它也只适用于宽字符。有没有办法通过先以某种方式转换为 UTF-8 来使用 fstream 或 wfstream 来做到这一点?谢谢!
最佳答案
您可能想使用 WideCharToMultiByte功能。
例如:
wchar_t buffer[LEN]; // input buffer
char output_buffer[OUT_LEN]; // output buffer where the utf-8 string will be written
int num = WideCharToMultiByte(
CP_UTF8,
0,
buffer,
number_of_characters_in_buffer, // or -1 if buffer is null-terminated
output_buffer,
size_in_bytes_of_output_buffer,
NULL,
NULL);
关于c++ - 从 ToUnicodeEx() 转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49942688/
到UnicodeEx: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646322(v=vs.85).aspx 到Unicode:
在下面的代码中:- BYTE ks[256]; auto keyboard_layout = GetKeyboardLayout(0); GetKeyboardState(ks); auto w =
我使用 GetAsyncKeyState() 获取输入,然后使用 ToUnicodeEx() 将其转换为 unicode: wchar_t character[1]; ToUnicodeEx(i, s
我在用 C++ 编写键盘钩子(Hook)时遇到了一些麻烦。 我可以读取击键,但我试图在按下 shift 键时使用 ToUnicodeEx() 转换击键。在我到目前为止的代码中,我有 i = ToUni
我是一名优秀的程序员,十分优秀!