工作里用到编码转换的功能,在网上找了个网友的代码,修改之后如下:
- char* codeConvert(const char* szSrc, char* szDest, int sourceCodepage, int targetCodepage)
- {
- int unicodeLen = MultiByteToWideChar( sourceCodepage, 0, szSrc, -1, NULL, 0);
- wchar_t * pUnicode;
- pUnicode = new wchar_t[unicodeLen + 1];
- memset(pUnicode,0,(unicodeLen+1) * sizeof(wchar_t));
- MultiByteToWideChar(sourceCodepage, 0, szSrc, -1, (LPWSTR)pUnicode, unicodeLen);
- int targetLen = WideCharToMultiByte(targetCodepage ,0, (LPWSTR)pUnicode, -1, szDest, 0, NULL, NULL);
- memset(szDest,0,targetLen + 1);
- WideCharToMultiByte(targetCodepage, 0, (LPWSTR)pUnicode,-1, szDest, targetLen, NULL, NULL);
- delete pUnicode;
- return szDest;
- }
sourceCodepage, targetCodepage见MSDN对MultiByteToWideChar参数的解释
char dest[260];
codeConvert(src, dest, CP_UTF8, 936);
这句代码将UTF-8编码转成ANSI(ANSI/OEM - Simplified Chinese (PRC, Singapore)).