您的位置:首页 > 其它

VC 实现 汉字 GBK(GB2312) 转化为 UTF8 编码

2008-11-24 22:22 831 查看
void ConvertUtf8ToGBK(CString& strUtf8)






{


int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);


unsigned short * wszGBK = new unsigned short[len+1];


memset(wszGBK, 0, len * 2 + 2);


MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);




len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);


char *szGBK=new char[len + 1];


memset(szGBK, 0, len + 1);


WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);




strUtf8 = szGBK;


delete[] szGBK;


delete[] wszGBK;


}






void ConvertGBKToUtf8(CString& strGBK)






{


int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);


unsigned short * wszUtf8 = new unsigned short[len+1];


memset(wszUtf8, 0, len * 2 + 2);


MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);




len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);


char *szUtf8=new char[len + 1];


memset(szUtf8, 0, len + 1);


WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL);




strGBK = szUtf8;


delete[] szUtf8;


delete[] wszUtf8;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: