谢谢了 

解决方案 »

  1.   

    int UTF8ToGB(const char* str,char *out)
    {
    WCHAR *strSrc;
    TCHAR *szRes;
    int len;

    //获得临时变量的大小
    int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
    strSrc = new WCHAR[i+1];
    MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);

    //获得临时变量的大小
    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
    szRes = new TCHAR[i+1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    len = (i+1)*sizeof(CHAR);
    memcpy(out,szRes,len);
    out[len+1] ='\0';

    delete []strSrc;
    delete []szRes;

    return len;
    }
    //GB2312字符串转为UTF-8编码
    LPCTSTR GB2312ToUTF8(LPTSTR pUTF8Out,LPCTSTR pGB2312Input, int GB2312Len)
    {
    CHAR buf[4];
    LPCTSTR lpReturn,pGB2312Cursor,pGB2312InputEnd;
    WCHAR wcBuffer;

    lpReturn = (LPCTSTR)pUTF8Out;
    pGB2312Cursor  = (LPTSTR)pGB2312Input;
    pGB2312InputEnd= pGB2312Cursor + GB2312Len;

    while( pGB2312Cursor<pGB2312InputEnd ){
    //如果ANSII直接复制就可以
    if( *pGB2312Cursor>0 ){
    *pUTF8Out++ = *pGB2312Cursor++;
    }else{
    ::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pGB2312Cursor,2,&wcBuffer,1);
    memcpy( pUTF8Out, UnicodeToUTF8Char(buf,wcBuffer), 3 );
    pGB2312Cursor += 2;
    pUTF8Out += 3;
    }
    }
    *pUTF8Out = '\0';
    return lpReturn;
    }
      

  2.   

    请问一下2楼 UnicodeToUTF8Char(buf,wcBuffer), 
    的这个 UnicodeToUTF8Char 是什么来的啊?
      

  3.   

    同问 UnicodeToUTF8Char这个函数 没有贴出来。。