windows下用multibytetowidechar+widechartomultibyte转utf8到gbk最稳妥,需注意字符边界、错误处理及缓冲区大小;linux/macos需用iconv,注意平台差异;c++标准库不支持gbk。

Windows下用MultiByteToWideChar + WideCharToMultiByte转UTF8到GBK
Windows API 是最稳妥的方案,因为系统原生支持 GBK(即 CP936),且绕过第三方库依赖。关键不是“能不能转”,而是字符边界和错误处理——UTF8里一个汉字是3字节,GBK里是2字节,直接 memcpy 必然乱码。
实操建议:
立即学习“C++免费学习笔记(深入)”;
- 先用
MultiByteToWideChar(CP_UTF8, ...)把 UTF8 字符串转成wchar_t(宽字符)中间态,注意传入长度时别漏掉末尾