gpt4 book ai didi

c++ - 从 ToUnicodeEx() 转换为 UTF-8

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:03 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com