本帖最后由 dduummoo 于 2014-05-21 15:10:07 编辑

解决方案 »

  1.   

    MultiByteToWideChar(CP_UTF8, ...);
      

  2.   

    char szText[] = {0xE4, 0xBB, 0x8A, 0xE5, 0xA4, 0xA9, 0x00};
    wchar_t* szBuf = NULL;
    int nlen = MultiByteToWideChar(CP_UTF8, 0, szText, -1, szBuf, 0);
    szBuf = new wchar_t[nlen];
    MultiByteToWideChar(CP_UTF8, 0, szText, -1, szBuf, nlen);
    CString strText(szBuf);
    AfxMessageBox(strText);
    delete[] szBuf;
    szBuf = NULL;
      

  3.   

       
         谢谢版主,MultiByteToWideChar这个函数里第三个参数是char*类型的,我用的是byte*,于是我用for循环了sprintf把整个byte数组转到另一个char数组里,之后再按你这样来,效果还可以。
         不过感觉还要循环一趟有些麻烦,于是我还想请教,有比sprintf更简单好用的方式吗?
      

  4.   

    char szText[] = {0xE4, 0xBB, 0x8A, 0xE5, 0xA4, 0xA9, 0x00};
    就是 被转换 的 若是 byte * 的:
    (char*) 转换 一下 就可以了
      

  5.   

       
         谢谢版主,MultiByteToWideChar这个函数里第三个参数是char*类型的,我用的是byte*,于是我用for循环了sprintf把整个byte数组转到另一个char数组里,之后再按你这样来,效果还可以。
         不过感觉还要循环一趟有些麻烦,于是我还想请教,有比sprintf更简单好用的方式吗?byte *即为unsigned char *类型,而char类型编译器默认是signed char,只需要设置一下编译设置,VS08 工程 --> 属性 --> C/C++ -->  语言,这样你程序中定义的所有char 类型,都是unsigned char 即byte类型