弄了一下午也没将这个转成功
 byte[] temp3 = { 0x67, 0x97, 0x63, 0x2F, 0x51, 0xEF };//string a=FromUnicodeByteArray(temp3);
            //string b = FromASCIIByteArray(temp3);
            //string c = UTF8ToUnicode(a);
            string d = System.Text.ASCIIEncoding.ASCII.GetString(temp3);
            Encoding enc = Encoding.ASCII;
            string text = enc.GetString(temp3);            text = System.Text.Encoding.GetEncoding(936).GetString(temp3);//gb2312 
            text = System.Text.Encoding.UTF8.GetString(temp3);
            text = System.Text.Encoding.Unicode.GetString(temp3);以上出来的没一个正确的。到底哪地方不对。

解决方案 »

  1.   

    先弄清楚当前的汉字编码方式,比如win32默认的GBK,再找到gbk到unicode的编码转换表,转换时在数组中查找即可
    UTF-8与Unicode字符的相互转换 与 16进制Unicode转换汉字 ---->Unicode转换为3位UTF-8编码代码(Copy修改即可使用 )
     
    CString strUnicode;
    strUnicode=“阿鸟是帅锅“;
    int iLen; 
    WCHAR m_acp[200];
    char m_UTF[200]; iLen = MultiByteToWideChar(CP_ACP,NULL,strUnicode,-1,m_acp,200); iLen = WideCharToMultiByte(CP_UTF8,NULL,m_acp,-1,m_UTF,2000,NULL,NULL);CString zc;
    zc.Format(“%d“,m_UTF);
    AfxMessageBox(zc);//m_UTF便是转换过后10进制的UTF8编码, 换成16进制后3位一字便可
    ---->16进制Unicode转换汉字代码(Copy修改即可使用 )char translateHex(char hex)
    {
     if(hex >= 'A')
          return (hex & 0xdf) - 'A' + 10;
        else
          return hex - '0';
    } char* URLstr="%B0%A1%C4%F1%CA%C7%CB%A7%B9%F8"; //阿鸟是帅锅
     int len = strlen(URLstr);
        char* result = new char[len + 1];
        memset(result, len + 1, 0);
        for(int i = 0, j = 0; i <= len; i++, j++) 
     {
          if(URLstr[i] == '+')
            result[j] = ' ';
          else if(URLstr[i] == '%') 
       {
            result[j] =
              translateHex(URLstr[i + 1]) * 16 +
              translateHex(URLstr[i + 2]);
            i += 2;
          } else
            result[j] = URLstr[i];
     }AfxMessageBox(result);
    ---->UTF-8转换Unicode汉字代码(Copy修改即可使用 )
     char  str  [  256  ]  =  {(  char  )0xE4,  (  char  )  0xBD,  (  char  )  0xA0,
             (  char  )  0xE5  ,(  char)0xA5  ,(char)0xBD,  
                (char)0x61,  (char)0x62  ,(char)0x63,(char)0}  ;    //一段UTF-8编码  
     WCHAR*  strA;  
     int  i=  MultiByteToWideChar  (  CP_UTF8  ,  0  ,(char*)  str  ,-1  ,NULL,0);  
     strA  =  new  WCHAR[i];  
     MultiByteToWideChar  (  CP_UTF8  ,  0  ,(  char  *  )  str,  -1,  strA  ,  i);  
     i=  WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);  
     char  *strB=new  char[i];  
     WideCharToMultiByte  (CP_ACP,0,strA,-1,strB,i,NULL,NULL);  
     //strB即为所求  
     AfxMessageBox(strB);
     delete  []strA;  
     delete  []strB;  
      

  2.   

    我的编码转成16进制字符串就是:6797632F51EF
    用工具就能正常显示人名:以上你的方法,与我要求的情况不一样。
      

  3.   

    Encoding.BigEndianUnicode
    林振凯
      

  4.   

    没想用的是uft-16,楼上已给分。