我用下面的函数实现转码,但是发现一个问题:汉字和英文混杂的字串,当英文前有奇数各中文时,转换之后的字串中最后中文和它挨着的第一个英文都不见了,在字串中取代这两个字符的是一个半角的问号!这是怎么回事?//////////////////////////////////////////////////////////////
//
//cASCII    要转换的字串
//cUTF8     转换后的字串
//char_len  要转换的字串长度
//////////////////////////////////////////////////////////////
bool ASC2UTF8(char *cASCII, char *cUTF8, int char_len)
{
wchar_t wbuf[1024];
char utf8buf[1024]; ZeroMemory(wbuf,sizeof(wbuf));
int nret=MultiByteToWideChar(CP_ACP,0,cASCII,char_len,wbuf,sizeof(wbuf)/sizeof(wbuf[0]));
if(nret>0&&nret<sizeof(wbuf))
{
nret = WideCharToMultiByte(CP_UTF8,0,wbuf,nret,utf8buf,sizeof(utf8buf),NULL,NULL);
if(nret<=0&&nret>=sizeof(utf8buf)) return false;
}
else return false;
utf8buf[nret] = '\0';
strcpy(cUTF8, utf8buf);
return true;
}