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

时间:2022-07-15 22:17: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;}