就是转码。乱码那就是你转码有问题,不能怪到转码头上。
记得有unicode与ascill之分

解决方案 »

  1.   

    试一试这个转换函数CStringA UTF8ToAnsi(const char *szUTF8)
    {
    DWORD dwLen = MultiByteToWideChar(CP_UTF8, NULL, szUTF8, -1, NULL, NULL);
    CStringW strUTF16;
    MultiByteToWideChar(CP_UTF8, NULL, szUTF8, -1, strUTF16.GetBuffer(dwLen), dwLen);
    strUTF16.ReleaseBuffer(); dwLen = WideCharToMultiByte(CP_ACP, NULL, strUTF16, -1, NULL, NULL, NULL, NULL);
    CStringA strUTF8;
    WideCharToMultiByte(CP_ACP, NULL, strUTF16, -1, strUTF8.GetBuffer(dwLen), dwLen, NULL, NULL);
    strUTF8.ReleaseBuffer(); return strUTF8;
    }
      

  2.   

    UTF8只是一种编码Unicode字符的方式你需要
    1 一个能显示你使用的Unicode字符的字体——一些字体并不包含所有字符
    2 调用Unicode版本的Windows API显示。用MFC来做的话,需要使用Unicode版本的MFC库。由于Unicode版的Windows API使用的是UTF-16,你需要做到UTF-16的转换。