std::string GBKToUtf8(const char* pSrc, int nLen)
{
string strOut;
if (pSrc && nLen > 0)
{
int wlen = MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)pSrc, nLen, NULL, 0);
WCHAR* wszUtf8 = new WCHAR[wlen + 1];
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)pSrc, nLen, wszUtf8, wlen);
int len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, wlen, NULL, 0, NULL, NULL);
char* szUtf8 = new char[len + 1];
WideCharToMultiByte(CP_UTF8, 0, wszUtf8, wlen, szUtf8, len, NULL, NULL);
strOut.assign(szUtf8, len);
delete[] szUtf8;
delete[] wszUtf8;
}
return strOut;
}
std::string Utf8ToGBK(const char* pSrc, int nLen)
{
string strOut;
if (pSrc && nLen > 0)
{
int wlen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)pSrc, nLen, NULL, 0);
unsigned short* wszGBK = new unsigned short[wlen + 1];
memset(wszGBK, 0, wlen * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)pSrc, nLen, (LPWSTR)wszGBK, wlen);
int len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, wlen, NULL, 0, NULL, NULL);
char* szGBK = new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, wlen, szGBK, len, NULL, NULL);
strOut.assign(szGBK, len);
delete[] szGBK;
delete[] wszGBK;
}
return strOut;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了