|
|
1 2 CString Convert(CString str, int sourceCodepage, int targetCodepage) 3  { 4 // int len=str.GetLength(); 5 6 int unicodeLen=MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0); 7 8 wchar_t * pUnicode; 9 pUnicode=new wchar_t[unicodeLen+1]; 10 11 memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); 12 13 14 MultiByteToWideChar(sourceCodepage,0,str,-1,(LPWSTR)pUnicode,unicodeLen); 15 16 BYTE * pTargetData; 17 pTargetData=new BYTE[1024000]; 18 int targetLen=WideCharToMultiByte(targetCodepage,0,(LPWSTR)pUnicode,-1,(char *)pTargetData,0,NULL,NULL); 19 20 pTargetData=new BYTE[targetLen+1]; 21 memset(pTargetData,0,targetLen+1); 22 23 WideCharToMultiByte(targetCodepage,0,(LPWSTR)pUnicode,-1,(char *)pTargetData,targetLen,NULL,NULL); 24 25 CString rt; 26 rt.Format("%s",pTargetData); 27 28 delete pUnicode; 29 delete pTargetData; 30 return rt; 31 32 }
|