ACSII和UTF8的互相转换
从网上找的,用着挺好的:),实际用的话还要整理一下
char *Convert(char *str, int sourceCodepage, int targetCodepage)
{
int unicodeLen, targetLen;
wchar_t *pUnicode;
BYTE *pTargetData;
char rt[256];
unicodeLen=MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0);
pUnicode = (wchar_t *)malloc((unicodeLen + 1) * sizeof(wchar_t));
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(sourceCodepage, 0, str, -1, (LPWSTR)pUnicode, unicodeLen); 
targetLen = WideCharToMultiByte(targetCodepage, 0, (LPWSTR)pUnicode, -1,
(char *)pTargetData, 0, NULL, NULL);
pTargetData = (BYTE *)malloc((targetLen + 1) * sizeof(BYTE));
memset(pTargetData, 0, targetLen + 1);
WideCharToMultiByte(targetCodepage, 0, (LPWSTR)pUnicode, -1,
(char *)pTargetData, targetLen, NULL, NULL);
memcpy(rt, (char *)pTargetData, targetLen);
free(pUnicode);
free(pTargetData);
return rt;
}使用:
编码 Convert(NewName, 936, CP_UTF8);
解码 Convert(NewName, CP_UTF8, 936);


浙公网安备 33010602011771号