解决utf-8和GBK中文乱码问题

来源:互联网 发布:莉莉柯林斯美 知乎 编辑:程序博客网 时间:2024/05/23 19:14

解决utf-8和GBK中文乱码问题

// 2014-04-30 解决utf-8中文乱码问题。参数:引用CString字符串并返回。
// 函数ConvertUtf8ToGBK,utf-8转换中文void CHlsUpdateDlg::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;}// 函数ConvertGBKToUtf8,中文转换utf-8void CHlsUpdateDlg::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;}


0 0